如何使用sed删除文本文件中包含特定字符串的所有行?
当前回答
我在Mac上挣扎着。另外,我需要使用变量替换来完成。
所以我使用了:
sed-i“”/$pattern/d“$文件
其中$file是需要删除的文件,$pattern是要匹配删除的模式。
我从评论中选择了“”。
这里需要注意的是在“/$pattern/d”中使用双引号。当我们使用单引号时,变量不起作用。
其他回答
要使用grep获得类似于就地的结果,可以执行以下操作:
echo "$(grep -v "pattern" filename)" >filename
在控制台中显示处理过的文本
cat filename | sed '/text to remove/d'
将处理过的文本保存到文件中
cat filename | sed '/text to remove/d' > newfile
将已处理的文本信息附加到现有文件
cat filename | sed '/text to remove/d' >> newfile
要处理已处理的文本,在这种情况下,请删除已删除内容的更多行
cat filename | sed '/text to remove/d' | sed '/remove this too/d' | more
more将一次显示一页的文本块。
cat filename | grep -v "pattern" > filename.1
mv filename.1 filename
此解决方案适用于对多个文件执行相同的操作。
for file in *.txt; do grep -v "Matching Text" $file > temp_file.txt; mv temp_file.txt $file; done
使用GNU sed的简单方法是:
sed --in-place '/some string here/d' yourfile