删除不同文件中包含指定字符串的行

Cov*_*ovi 2 grep sed find text-processing

假设web/namedfoo.php和 中有两个文件bar.php。第一行foo.php是“sdajgeSTRINGdsad”,第十行bar.php是“gdfhu98324STRING”。任务是首先定位这两个文件,然后删除foo.php 的第一行和bar.php 的第10 行,假设指定的字符串是“STRING”。

tux*_*xce 6

sed 可以这样做:

sed -i.bak '/STRING/d' web/*
Run Code Online (Sandbox Code Playgroud)

  • @ZonghengYang:要使用此方法进行递归搜索,您必须更改 shell globing 方法,以便可以使用 `**`,这是一个递归匹配的 glob。首先运行:`shopt -s extglob`,然后使用`web/**`。 (2认同)
  • 试试:`grep -Zlr STRING web | xargs -0 sed -i.bak '/STRING/d'`(编辑:我没有看到之前的评论,extglob 保存了 2 个进程) (2认同)