【问题标题】:find identical keys with different values from two text files从两个文本文件中找到具有不同值的相同键
【发布时间】:2021-04-23 04:25:04
【问题描述】:

我有两个文件的数据格式如下:

cat File1.txt

A: 1
B: 2
C: 3
D: 4
E: 5

cat File2.txt

A: 10
B: 2
C: 30
D: 4
F: 6

我想知道如何打印常用键的差异,例如:

A: 1, 10
C: 3, 30

【问题讨论】:

  • 你对awk了解多少?单击上面的awk 标签,然后单击Learn more... 链接以获取简要介绍。你有没有尝试过自己解决这个问题?

标签: bash awk vimdiff


【解决方案1】:

你可以试试

awk -F":" 'NR==FNR{a[$1]=$2} FNR!=NR && a[$1] && a[$1]!=$2{print $1":"a[$1]","$2}' File1.txt File2.txt

【讨论】:

    【解决方案2】:

    由于文件中似乎没有重复项,因此应该这样做:

    $ awk '{if(($1 in a)&&$2!=a[$1])print $1,a[$1] ", " $2;else a[$1]=$2}' file1 file2
    

    输出:

    A: 1, 10
    C: 3, 30
    

    解释:

    $ awk '{
        if(($1 in a) && $2!=a[$1])    # if $1 already seen and $2 not equal to previous
            print $1,a[$1] ", " $2    # output
        else 
            a[$1]=$2                  # else store the value as seen for the first time
    }' file1 file2
    

    【讨论】:

      【解决方案3】:
      $ cat tst.awk
      BEGIN { OFS=", " }
      NR==FNR {
          a[$1] = $2
          next
      }
      ($1 in a) && (a[$1] != $2) {
          print $0, a[$1]
      }
      

      $ awk -f tst.awk file2 file1
      A: 1, 10
      C: 3, 30
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-10
        • 2018-05-07
        • 2021-06-11
        • 1970-01-01
        • 2017-06-18
        • 2022-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多