使用sed删除多个文本文件中的匹配行

时间:2011-04-29 09:32:14

标签: file-io sed

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

var $useDbConfig = 'default_dev';

如何从所有文件中删除此行,然后使用sed使用单行命令保存同一文件?

3 个答案:

答案 0 :(得分:1)

你可以尝试

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

或者您可以使用awk

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

答案 1 :(得分:1)

-i的{​​{1}}参数已编辑到sed。通过参数,它可以保存备份。所以你想要这样的东西:

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

答案 2 :(得分:0)

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

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

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