如何利用grep和sed实现搜索和替换

grep -Erl "M\\('local" .|xargs sed -Ei "" "s/M\\('local/M\\('remote/g"

grep -Erl "http://loca" .|xargs sed -Ei "" "s/http:\/\/local/http:\/\/remote/g"

grep

  • -E 将样式为延伸的普通表示法来使用
  • -r 此参数的效果和指定“-d recurse”参数相同
  • -l 列出文件内容符合指定的样式的文件名称

字符小括号 '(' 在正则表达式里有特殊含义,需要转义字。

sed

  • -i 直接修改读取的文件内容,而不是输出到终端

Mac OSX 下多了一个参数,备份名,如果不备份,就传空字符串""

xargs

给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。

References

  • https://www.cnblogs.com/wangqiguo/p/6464234.html
  • https://wangchujiang.com/linux-command/c/xargs.html
Grape

Grape

Graduated in Computer Science and Engineering, but currently working with GNU/Linux infrastructure and in the spare time I'm an Open Source programmer (Python and C), a drawer and author in the YINGJUE Blog.


Comments