String 如果在文件A中找到单词,则从文件B中删除包含单词的行
FileA包含单词,FileB包含字符串。String 如果在文件A中找到单词,则从文件B中删除包含单词的行,string,bash,sed,grep,comparison,String,Bash,Sed,Grep,Comparison,FileA包含单词,FileB包含字符串。 如何使用sed/grep/awk(最好)从FileB中删除包含FileA中单词的行? 示例文件a: 单词asdf单词qwer单词zxcv 示例文件B: 因此,FileB应更改为: 速度是这里的一个问题,因为FileA和FileB都可能是巨大的。如果需要,可以对文件A和文件B进行排序。grep-F-v-F FileB.new -F表示匹配固定字符串而不是正则表达式 -v表示输出不匹配的行 -f表示从文件名中获取要匹配的字符串列表 gre
如何使用sed/grep/awk(最好)从FileB中删除包含FileA中单词的行?
示例文件a:
单词asdf
单词qwer
单词zxcv
示例文件B:
因此,FileB应更改为:
速度是这里的一个问题,因为FileA和FileB都可能是巨大的。如果需要,可以对文件A和文件B进行排序。
grep-F-v-F FileB.new
表示匹配固定字符串而不是正则表达式-F
表示输出不匹配的行-v
表示从文件名中获取要匹配的字符串列表-f
grep-F-v-F文件b.new
表示匹配固定字符串而不是正则表达式-F
表示输出不匹配的行-v
表示从文件名中获取要匹配的字符串列表-f
您可以使用
:grep
正如所评论的,您还可以为grep-v-f tmp和mv tmp文件b
使用grep
选项,这将使它将模式视为固定字符串,并且效率更高-F
您可以使用
:grep
正如所评论的,您还可以为grep-v-f tmp和mv tmp文件b
使用grep
选项,这将使它将模式视为固定字符串,并且效率更高-F
这里是一个
解决方案:awk
awk 'FNR==NR{a[$2]++;next} {for (i in a) if ($0~i) next}8' fileA fileB http://www.webaddress.com/point?a=pert https://www.webaddress.com/point?a=njil
下面是一个
解决方案:awk
awk 'FNR==NR{a[$2]++;next} {for (i in a) if ($0~i) next}8' fileA fileB http://www.webaddress.com/point?a=pert https://www.webaddress.com/point?a=njil
能否删除
中的前缀FileA
,使其仅包含单词?不幸的是,这不是一个选项。能否删除Word
中的前缀FileA
,使其仅包含单词?不幸的是,这不是一个选项。解决方案无法内联编辑FileB。因此,Word
使用grepgrep-v-f temp和&mv temp FileB
增加速度,并且-f
可能比awk快一点`您确定cut
执行速度比cut
快吗?像awk
@glennjackman我同意你的cut-d'-f2
。但是,如果单词被多个空格隔开,使用-F
可能会有问题。@myusuf,我不确定。我认为cut是一个更简单的可执行文件。您必须对其进行基准测试:使用或类似的方法解决方案无法内联编辑FileB。因此,cut
使用grepgrep-v-f temp和&mv temp FileB
增加速度,并且-f
可能比awk快一点`您确定cut
执行速度比cut
快吗?像awk
@glennjackman我同意你的cut-d'-f2
。但是,如果单词被多个空格隔开,使用-F
可能会有问题。@myusuf,我不确定。我认为cut是一个更简单的可执行文件。您必须对它进行基准测试:使用或类似的东西grep没有像cut
这样的内联选项吗?不,它不写入文件,它只写入stdout。grep没有像-i
这样的内联选项吗?不,它不写入文件,它只写入stdout。-i
awk 'FNR==NR{a[$2]++;next} {for (i in a) if ($0~i) next}8' fileA fileB http://www.webaddress.com/point?a=pert https://www.webaddress.com/point?a=njil