- linux 内容替换,多文件查找替换
来源:http://bbs.phpchina.com/blog-191373-187668.html
- + -
1.sed
-
用sed命令可以批量替换多个文件中的 字符串。
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
例如:我要把mahuinan替换 为huinanma,执行命令:
sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www
补充说明:
sed -i "s/oldString/newString/g" `grep oldString -rl /path`
对多个文件的处理可能不支持,需要用 xargs, 搞定。
变种如下:grep oldString -rl /path | xargs sed -i "s/oldString/newString/g"
注意:
在 `grep oldString -rl /path` 中 ` 为1前边的翻引号`,而不是enter 前的 '
-
xargs
参见:http://blog.csdn.net/zhu244912654/article/details/7450430
递归查找所有Python文件并统计文件行数find . -name '*.py' | xargs wc -l递归查找所有Emacs备份文件并删除:find . -name '*~' | xargs rm递归查找所有Python文件并搜索import语句:find . -name '*.py' | xargs grep 'import'[popexizhi] 这样看来xargs应该是对列表中内容的递归处理
grep -rl
-
-l
来源:http://soft.zdnet.com.cn/software_zone/2007/1014/553088.shtml
-l,--files-with-matches
打印匹配模板的文件清单。
-L,--files-without-match
打印不匹配模板的文件清单
grep oldString -rl /path | xargs sed -i "s/oldString/newString/g"
替换时如果不存在,如果不存在系统提示“sed: no input files”如何处理这个问题?是否需要处理?
-
-l
-
xargs
- + -
在日程的开发过程中,可能大家会遇到将某个变量名修改 为另一个变量名的情况,如果这个变量是一个局部变量的话,vi足以胜任,但是如果是某个全局变量的话,并且在很多文件中进行了使用,这个时候使用vi就是 一个不明智的选择。这里给出一个简单的shell命令,可以一次性将所有文件中的指定字符串进行修改:
grep "abc" * -R | awk -F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'
-
grep "abc" * -R
[popexizhi]递归查询当前目录和所有子目录中文件包含abc的内容
查找结果如下:
[root@bogon sedt]# grep "test" * -R
2.sh:source /home/work/war_ftp/test/use_test.sh #import test use shell
2.sh: ##test test code using
2.sh: ###echo "test test code using"
2.sh: # test stop
2.sh: #test del old
2.sh: testdel=$?
awk -F: '{print $1}'
[popexizhi]对输入内容使用:分割,打印第一列内容
如下:
[root@bogon sedt]# grep "test" * -R|awk -F: '{print $1}'
2.sh
2.sh
2.sh
sort
[popexizhi]排序
uniq
[popexizhi]去重复内容
xargs sed -i 's/abc/abcde/g'
[popexizhi]替换的内容
-
grep "abc" * -R
-
用sed命令可以批量替换多个文件中的 字符串。
-
参考:http://hi.baidu.com/higkoo/item/4c55efc63189847eced4f8fa
#! /bin/bash
IFS="
"
for LINE in `cat /etc/passwd`
do
echo $LINE
done
- + -
1.sed
html tool
2013年4月28日星期日
linux 多文件中内容替换
订阅:
博文评论 (Atom)
没有评论:
发表评论