String 如果在文件A中找到单词,则从文件B中删除包含单词的行

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

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
    表示从文件名中获取要匹配的字符串列表
  • 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
      中的前缀
      Word
      ,使其仅包含单词?不幸的是,这不是一个选项。解决方案无法内联编辑FileB。因此,
      grep-v-f temp和&mv temp FileB
      使用grep
      -f
      增加速度,并且
      cut
      可能比awk快一点`您确定
      cut
      执行速度比
      awk
      快吗?像
      cut-d'-f2
      @glennjackman我同意你的
      -F
      。但是,如果单词被多个空格隔开,使用
      cut
      可能会有问题。@myusuf,我不确定。我认为cut是一个更简单的可执行文件。您必须对其进行基准测试:使用或类似的方法解决方案无法内联编辑FileB。因此,
      grep-v-f temp和&mv temp FileB
      使用grep
      -f
      增加速度,并且
      cut
      可能比awk快一点`您确定
      cut
      执行速度比
      awk
      快吗?像
      cut-d'-f2
      @glennjackman我同意你的
      -F
      。但是,如果单词被多个空格隔开,使用
      cut
      可能会有问题。@myusuf,我不确定。我认为cut是一个更简单的可执行文件。您必须对它进行基准测试:使用或类似的东西grep没有像
      -i
      这样的内联选项吗?不,它不写入文件,它只写入stdout。grep没有像
      -i
      这样的内联选项吗?不,它不写入文件,它只写入stdout。
      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