【问题标题】:2 files containing some same strings2个文件包含一些相同的字符串
【发布时间】:2018-08-19 14:45:47
【问题描述】:

我有 2 个文件....

文件1:

012:coffee
013:salt
014:apple
015:mushrooms
016:tree

文件2:

Subject: Three tips to get the most out of Gmail
Subject: The best of Gmail, wherever you are
Subject: Stay more organized with Gmail's inbox
Subject: 012
Subject: 014

如何生成一个新文件来比较前两个并包含:

012:coffee
014:apple

【问题讨论】:

  • 问题不完全清楚。您在什么基础上试图获得输出?请更新问题并提供更多详细信息
  • Stack Overflow 不是代码编写服务。请出示您的代码。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: regex linux text awk grep


【解决方案1】:

使用单个 awk 命令:

awk -F':[[:space:]]*' 'NR==FNR{ if($2 ~ /^[0-9]+$/) a[$2]; next }$1 in a' file2 file1

输出:

012:coffee
014:apple

【讨论】:

    【解决方案2】:
    awk -F':' '
    NR==FNR {
        sub(/^[^:]+:[[:space:]]*/,"")
        a[$0]
        next
    }
    $1 in a
    ' file2 file1
    

    如果 file2 中的主题文本包含冒号,您需要 sub() 方法而不是依赖 $2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2020-05-18
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多