关于bash:搜索文件中的字符串,然后通过Shell脚本从该文件中删除它

Search a string in a file and delete it from this file by Shell Script

本问题已经有最佳答案,请猛点这里访问。

我想从文件中删除包含特定字符串的行。 如何在不使用awk的情况下执行此操作? 我试图使用sed,但我无法实现它。


这应该这样做:

1
2
3
sed -e s/deletethis//g -i *
sed -e"s/deletethis//g" -i.backup *
sed -e"s/deletethis//g" -i .backup *

它会将所有出现的"deletethis"替换为所有文件中的"(nothing)"(*),并在适当的位置进行编辑。

在第二种形式中,模式可以编辑得更安全一些,它通过用".backup"后缀来备份任何修改过的文件。

第三种形式是某些版本的sed喜欢它的方式。 (例如Mac OS X)

man sed了解更多信息。


1
sed -i '/pattern/d' file

使用"d"删除一行。 这至少适用于GNU-Sed。

如果您的Sed没有选项,要更改文件,也许您可以使用中间文件来存储修改:

1
sed '/pattern/d' file > tmpfile && mv tmpfile file

直接写入源代码通常不起作用:sed '/pattern/d' file > file所以在尝试之前复制一份,如果你怀疑的话。


试试vim-way:

1
ex -s +"g/foo/d" -cwq file.txt