我正在尝试从几百个文件中删除一行。以下内容完全符合我的需要,但它不会保存更改(如预期的那样)。
$ grep -v meow src/files
我已经看到将>
附加到给定命令的末尾将指定输出缓冲区应该保存的位置,但是,这是否适用于多个文件?
所以我想知道是否有一种通过终端进行批量编辑的优雅方式。我使用awk
或sed
遇到的所有示例都只提供了一次编辑一个文件的解决方案。
答案 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/*