首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

查寻并替换字符串的脚本

2013-08-01 
查找并替换字符串的脚本首先判断输入的参数是否是两个?使用find和sed#首先查找个数(sed -n)find . -name

查找并替换字符串的脚本

首先判断输入的参数是否是两个

?

使用find和sed

#首先查找个数(sed -n)

find . -name '*.htm' | xargs sed -n '/old/p'

#然后替换(sed -i)

find . -name '*.htm' | xargs sed -i 's/old/new/g'

?

使用grep和sed

grep -l old *.htm | xargs sed -n "/old/p"
sed -n '/old/p' `grep -l old *.htm`

?

使用find和perl

find . -name '*.htm' | xargs? perl -pi -e 's|old|new|g'

?

参考:

http://hi.baidu.com/msingle/blog/item/3b125b3fc0e1efe255e72375.html

http://blog.csdn.net/zhangboyj/article/details/6215429

// 使用?shell?在多个文件中查找??
find . -type f | xargs grep flash ?
说明: ?
找出前目录及其子目录下的文件中含有 flash 的文件 ?
// ?
重点记录下 xargs 命令: ?
xargs 在标准输入上取得参数列表、一行一个,再将他们以适当的大小组起来(由主机的 ARG_MAX 值决定)传给另一个命令,此命令在作为 xargs 的参数. ?
ARG_MAX 值查看方法: ?
getconf ARG_MAX ?
// ?
// ?
在多个文件中查找使用命令替换也可以完成 ?
grep flash $( find . -type f) ?
说明: ?
$() 是命令替换,括号内是?shell?命令;shell?执行括号内的命令并将整个 $(...) 替换为 命令的输出 ?
命令替换的形式有两种,一种是 $(),另一种是使用两个反引号 ‘find . -type f‘

//?多个文件中替换 - sed??
为了保证不该替换的不被替换,先在文件中查找一下哪些会被替换 ?
find -type f ! -path '*.svn*' | xargs sed -n '/Ookong inc/p' ?
说明: ?
1, find 首先过滤掉 .svn 目录及其子目录 ?
2, xargs 传递参数给 sed 命令 ?
3, sed 执行查找, 只打印符合要求的行 ?
// ?
// 替换 ?
find -type f ! -path '*.svn*' | xargs sed -i 's/Ookong inc/Ookong Ltd. Co./g' ?
说明: ?
1, sed 的 i 选项直接在文件中替换,而不是把替换结果打印出来 ?
2, g 对每行中所有匹配执行替换 ?
// ?
// ?
另外:一个 perl 多文件查找的程序: ack ?
-- 显示所在的行号及所在的文件??

热点排行