在多个文件中查找并删除一行

find and remove a line in multiple files

我有很多文件,我必须在这些文件中找到一行并删除,并且应该在 linux 中的终端中。有人知道怎么做吗?

例子

文件系统

myFiles
   + file1
   + file2
   ...
   + file6500

文件

aaa0
aaa1
....
fff9

这将删除每个文件中的那一行。

for f in myFiles/*; do
  sed -i 'd/pattern that matches line that you want to delete/' $f
done

或者您也可以使用 awk。

tmp=$(mktemp)
for f in myFiles/*; do
  awk '!/pattern that matches the line that you want to delete/' $f > $tmp
  cp $tmp $f 
done
rm $tmp

这里的模式是一个正则表达式。您可以指定正则表达式的不同变体,例如POSIX 扩展 通过将不同的标志传递给 sed 或 awk。让我知道这是否充分回答了您的问题。

回复您的问题后,我发现它是重复的:Delete lines in a text file that containing a specific string