在多个文件中查找并删除一行
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
我有很多文件,我必须在这些文件中找到一行并删除,并且应该在 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