File io 使用sed从多个文本文件中删除匹配行

File io 使用sed从多个文本文件中删除匹配行,file-io,sed,File Io,Sed,我的项目目录中的所有文件都有一行: var $useDbConfig = 'default_dev'; 如何使用sed命令删除所有文件中的这一行,然后保存同一文件?您可以尝试 sed -i.bak '/var \$useDbConfig = .*default_dev.*;/d' * 或者您可以使用awk awk '/var/&&/\$useDbConfig/&&/default_dev/{next}{print $0>FilENAME}' * 如果您

我的项目目录中的所有文件都有一行:

var $useDbConfig = 'default_dev';
如何使用sed命令删除所有文件中的这一行,然后保存同一文件?

您可以尝试

sed -i.bak '/var \$useDbConfig = .*default_dev.*;/d' *
或者您可以使用
awk

awk '/var/&&/\$useDbConfig/&&/default_dev/{next}{print $0>FilENAME}' *

如果您的
sed
版本支持
-i
选项,您可以使用此命令以交互方式从当前目录中的所有文件中删除该行:

sed -i "/var \$useDbConfig = 'default_dev';/d" ./*

此外:引用字符串的方法在
bash
中有效。在其他shell(如
csh
)中,您应该调整模式。

-i
参数设置为
sed
在位编辑。通过一个参数,它保存了一个备份。所以你想要这样的东西:

STR="var $useDbConfig = 'default_dev';"
sed -i.bak "/$STR/d" *

你比我快了几秒钟;)作为一个noob,您应该警告我,它将生成大量filename.bak.:)在sed错误“sed:无法编辑:不是常规文件”之后,我不得不将最后一个“”替换为“.php”。谢谢@哦,对不起:)