Mac OS X从多个文件中删除行

时间:2015-06-02 00:11:26

标签: macos grep

我正在尝试从几百个文件中删除一行。以下内容完全符合我的需要,但它不会保存更改(如预期的那样)。

$ grep -v meow src/files

我已经看到将>附加到给定命令的末尾将指定输出缓冲区应该保存的位置,但是,这是否适用于多个文件?

所以我想知道是否有一种通过终端进行批量编辑的优雅方式。我使用awksed遇到的所有示例都只提供了一次编辑一个文件的解决方案。

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用以下Perl one-liner:

perl -i.bak -n -e 'print unless /meow/' src/files

这应该对多个文件进行就地编辑。原件保存在.bak个文件中。

答案 1 :(得分:1)

另一种方法是使用sed执行类似的操作:

sed -i .bak '/meow/d' src/files/*
毕竟,Perl从sed获得了-i选项。请注意,要不使用备份文件,您需要一个显式空扩展,至少包含某些版本的sed:

sed -i '' '/meow/d' src/files/*