【问题标题】:How to copy some line of a text file by having a list of names [duplicate]如何通过名称列表复制文本文件的某些行[重复]
【发布时间】:2016-07-04 09:01:32
【问题描述】:

我有一个包含 2,000,000 行 (text1) 的文本文件,我想仅通过包含部分行 (text2) 来提取其中一些行。 示例:

Text1

seq1 TNS 23 45 67 81 92
seq2 trq 54 67 80 73 12
seq3 ewr 59 61 51 51 71
seq4 qto 54 94 93 92 02

Text2

seq2
seq3
seq4

我需要从 Text1 中提取所有 Text2 输入。

任何答案将不胜感激, 谢谢

【问题讨论】:

    标签: linux command-line terminal


    【解决方案1】:

    使用它从text1匹配匹配text2的行

    grep -f text2 text1
    

    这是我试过的例子

    $> cat text1
    seq1 TNS 23 45 67 81 92
    seq2 trq 54 67 80 73 12
    seq3 ewr 59 61 51 51 71
    seq4 qto 54 94 93 92 02
    
    $> cat text2
    seq2
    seq3
    seq4
    
    $> grep -f text2 text1
    seq2 trq 54 67 80 73 12
    seq3 ewr 59 61 51 51 71
    seq4 qto 54 94 93 92 02
    

    【讨论】:

      【解决方案2】:

      将匹配项构造成正则表达式,并通过 grep 运行:

      egrep 'seq2\|seq3\|seq4' Text1
      

      【讨论】:

      • 感谢您接受这个答案,但我实际上认为@Utsav 的答案更好,因为它在技术上做同样的事情,但更容易实现。
      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 2017-10-12
      • 2019-01-23
      • 1970-01-01
      • 2020-03-28
      • 2014-04-19
      • 2020-01-05
      • 2010-11-22
      相关资源
      最近更新 更多