搜索文件中的字符串,然后通过Shell脚本将其从此文件中删除

时间:2011-04-07 16:37:37

标签: bash shell

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

3 个答案:

答案 0 :(得分:42)

这应该这样做:

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

它将在所有文件(*)中替换所有出现的“deletethis”和“”(无),并对其进行编辑。

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

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

man sed了解更多信息。

答案 1 :(得分:17)

sed -i '/pattern/d' file

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

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

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

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

答案 2 :(得分:0)

尝试vim-way:

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