删除文本文件中包含特定字符串的行

删除文本文件中包含特定字符串的行

如何使用sed删除文本文件中包含特定字符串的所有行?



慕尼黑的夜晚无繁华
浏览 3892回答 3
3回答

开心每一天1111

若要删除该行并将输出打印为标准输出,请执行以下操作:sed '/pattern to match/d' ./infile若要直接修改文件,请执行以下操作:sed -i '/pattern to match/d' ./infile要直接修改文件(并创建备份):sed -i.bak '/pattern to match/d' ./infile对于MacOSX和FreeBSD用户:sed -i '' '/pattern/d' ./infile

眼眸繁星

除了删除具有特定字符串的行之外,还有许多其他方法可以删除行。sed:AWKawk&nbsp;'!/pattern/'&nbsp;file&nbsp;>&nbsp;temp&nbsp;&&&nbsp;mv&nbsp;temp&nbsp;fileRuby(1.9+)ruby&nbsp;-i.bak&nbsp;-ne&nbsp;'print&nbsp;if&nbsp;not&nbsp;/test/'&nbsp;filePerlperl&nbsp;-ni.bak&nbsp;-e&nbsp;"print&nbsp;unless&nbsp;/pattern/"&nbsp;fileshell(bash 3.2及更高版本)while&nbsp;read&nbsp;-r&nbsp;linedo &nbsp;&nbsp;[[&nbsp;!&nbsp;$line&nbsp;=~&nbsp;pattern&nbsp;]]&nbsp;&&&nbsp;echo&nbsp;"$line"done&nbsp;<file&nbsp;>&nbsp;o mv&nbsp;o&nbsp;fileGNUgrepgrep&nbsp;-v&nbsp;"pattern"&nbsp;file&nbsp;>&nbsp;temp&nbsp;&&&nbsp;mv&nbsp;temp&nbsp;file当然还有sed(打印反向比实际删除快):sed&nbsp;-n&nbsp;'/pattern/!p'&nbsp;file

繁花如伊

您可以使用sed替换文件中的行。但是,它似乎比将grep用于逆文件,然后将第二个文件移动到原始文件中要慢得多。G.sed&nbsp;-i&nbsp;'/pattern/d'&nbsp;filename或grep&nbsp;-v&nbsp;"pattern"&nbsp;filename&nbsp;>&nbsp;filename2;&nbsp;mv&nbsp;filename2&nbsp;filename无论如何,第一个命令在我的机器上要花费3倍的时间。
打开App,查看更多内容
随时随地看视频慕课网APP