【发布时间】:2011-07-31 20:50:04
【问题描述】:
我想从文件中删除包含特定字符串的行。如果不使用awk,我怎么能做到这一点?我尝试使用sed,但无法实现。
【问题讨论】:
我想从文件中删除包含特定字符串的行。如果不使用awk,我怎么能做到这一点?我尝试使用sed,但无法实现。
【问题讨论】:
应该这样做:
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 了解更多信息。
【讨论】:
-i.bak 语法,其中 sed 创建具有给定扩展名的备份文件。 IE。也可以是-i.backup...
grep -v。
sed -i '/pattern/d'没有(删除所有行,而不是字符串)
sed -i '/pattern/d' file
使用 'd' 删除一行。这至少适用于 GNU-Sed。
如果您的 Sed 没有选择就地更改文件,也许您可以使用中间文件来存储修改:
sed '/pattern/d' file > tmpfile && mv tmpfile file
直接写到源代码通常是行不通的:sed '/pattern/d' file > file,所以如果您怀疑,请在尝试之前复制一份。
【讨论】:
-i.bak 而不是仅使用-i 来创建原始文件的备份。
sed,它删除了所有行而不是字符串,@mvds 回答有效
sed 's/pattern//g'
试试 vim 方式:
ex -s +"g/foo/d" -cwq file.txt
【讨论】: