在sh中,如何删除文件中以"string"开头的所有行?我在考虑使用sed命令。
grep -v '^string' yourfile.txt > stripped.txt
如果您的sed支持-i选项,您可以在原地进行操作:
sed -i '/^string/d' input-file
-i
选项时,sed期望有一个文件扩展名作为备份。在Mac OS X中,你需要非常谨慎,所以要明确地使用单引号:sed -i '' '/^string/d' input-file
。 - Joel Brunersed
甚至不支持-i
选项!我的个人偏好是从不使用-i
,而是用Shell进行重定向。 - William Pursell你的答案中缺少了sed和grep的好朋友awk:
awk '!/^string/' inputfile > resultfile
您可以在 Ex 模式下使用 Vim:
ex -sc g/^string/d -cx file
g
选择所有匹配的行
d
删除
x
保存并关闭
mv tempfile origfile
命令进行替换。如果你想要真正的原地编辑,那么需要使用sed/perl/awk等工具。 - Marc B