使用 shell 命令进行查找替换
使用 shell 命令进行查找替换
需要使用到 sed
命令,以下是来自 man page 的介绍:
sed - stream editor for filtering and transforming text
示例:
$ sed -i -e 's/toreplace/newcontent/g’ somefile.txt
以上脚本将查找 somefile.txt
中 toreplace
文本并替换为 yoursetting
。其中这两部分都可以为正则表达式。
其中,
s
表示 substitute 即替换之意,g
表示 global,进行全局替换而不是只替换一个-i
表示 in-place 即原地替换,而不是创建新文件-e
表示执行随后的命令
多文件或整个目录扫描
上述命令只扫描单个文件,如果想扫描整个目录,可结合 find
来实现:
$ find . -type f -exec sed -i -e 's/foo/xxx/g' {} \;
如果上述命令报如下错误:
sed: RE error: illegal byte sequence
需要设置当前命令行的 LANG
变量:
export LC_CTYPE=C
export LANG=C
结合 grep
需要批量处理文件时,也可结合 grep 实现。
$ grep -rl foo . | xargs sed -i -e 's/foo/xxx/g'