【问题标题】:cat a file or tags and xargs grep the tags in a filecat 文件或标签和 xargs grep 文件中的标签
【发布时间】:2011-03-10 01:20:21
【问题描述】:

我认为这只是一个简单的命令,但我根本无法找到解决方案

我想用标签(由多行分隔)对文件进行分类

文件1

aaa
bbb
ded

然后将这些 TAGS(逐行)grep 到单个文件中,我们称之为 TargetFile

我所做的如下:

cat File1 | xagrs grep {} TargetFile

它不对 TargetFile 执行 grep。我该怎么做?

我现在正在使用mobaxterm

【问题讨论】:

    标签: linux grep xargs


    【解决方案1】:
    fgrep -f File1 TargetFile
    

    还要注意没有 Cat 的无用用法。

    【讨论】:

      【解决方案2】:

      像往常一样,不止一种方法:

      xargs -n 1 grep Targetfile -e < File
      

      【讨论】:

        【解决方案3】:
        cat File1 | xargs -I {} grep {} TargetFile
        

        【讨论】:

          【解决方案4】:

          根据文件的大小,这将运行得更快:

          cat File1 | parallel -j0 grep {} TargetFile
          

          如果 File1 中的标签数小于您可以并行运行的进程数,则 TargetFile 只会从磁盘读取一次。如果 TargetFile 大于您的磁盘缓存,这可能是个好主意。

          要了解有关 GNU Parallel 的更多信息,请观看介绍视频:http://www.youtube.com/watch?v=OpaiGYxkSuQ

          【讨论】:

          • 我喜欢尝试平行。我看过一些并行的例子,我认为它是一个很好的工具。但不幸的是,它没有在mobaxterm中编译。希望他们在网络上的蜘蛛可以在这里捕捉到我的评论。
          【解决方案5】:

          我想我在其他论坛搜索后找到了答案

          > for i in `cat File1` ; do grep $i TargetFile; done
          

          【讨论】:

            【解决方案6】:
            cat File1 | while read tag; do grep $tag TargetFile; done
            

            【讨论】:

              【解决方案7】:
              cat File1 | xagrs -i grep {} TargetFile
              

              【讨论】:

                猜你喜欢
                • 2021-11-08
                • 1970-01-01
                • 2013-04-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多