Grep / Sed:如何递归查找/替换字符串?

时间:2016-07-06 16:52:23

标签: linux bash shell

如何查找和替换每次出现的

httpaccess

httpaccessabc

在特定文件夹中名为“access.html”的每个文件中

3 个答案:

答案 0 :(得分:2)

shopt -s globstar
sed -i.bak 's/httpaccess/&abc/g' **/access.html
  • globstar**一起使用,以递归方式匹配您的文件名。
  • 使用sed -i执行就地替换。

这将创建带有后缀.bak的备份文件。要取消设置shell选项,请在之后使用shopt -u globstar

答案 1 :(得分:2)

find是你的朋友

 find . -type f -name 'access.html' \
 -exec sed -i.bak 's/httpaccess/&abc/g' {} \;

修改

替换整个模式使用:

 find . -type f -name 'access.html' \
 -exec sed -i.bak 's/abcde/wazsde/g' {} \;

备注

  1. .替换为/your/path关注点。
  2. 第一行末尾的\只是将命令分成两行以提高可读性。
  3. 带有g命令的s选项用于全局替换。

答案 2 :(得分:1)

如果你知道access.html的文件夹,那么: -

sed -i.bak 's/httpaccess/httpaccesabc/g' access.html

(或)

sed -i.bak 's/httpaccess/&abc/g' access.html