【问题标题】:Compare two files with first column matching text and 2nd column of first file > than 2nd column value of 2nd file比较两个文件的第一列匹配文本和第一个文件的第二列 > 比第二个文件的第二列值
【发布时间】:2015-06-04 00:31:53
【问题描述】:

寻找 awk one 班轮:

我有两个文件,每个文件有两列

我需要打印两个文件中第一列匹配的记录 并且第二个文件值列大于第一个文件值列。

文件1

AAAA 322
BBBB 322
DDDD 200

文件2

AAAA 700
CCCC 400
DDDD 100

寻找结果

AAAA 700

感谢任何帮助。到目前为止,我可以匹配第 1 列,但不确定如何计算第二列的值 >

awk 'NR == FNR{a[$1];next}$1 in a' file1.txt file2.txt
AAAA 700
DDDD 100

更新

我想我可能是通过颠倒文件顺序并使用:

awk 'FNR==NR{a[$1]=$2 FS $3;next}{ print $0, a[$1]}' file2.txt file1.txt|awk '$3 > $2' |awk '{print $1" "$3}'
AAAA 700

【问题讨论】:

    标签: awk compare multiple-columns


    【解决方案1】:

    输入

    [akshay@localhost tmp]$ cat file1
    AAAA 322
    BBBB 322
    DDDD 200
    
    [akshay@localhost tmp]$ cat file2
    AAAA 700
    CCCC 400
    DDDD 100
    

    输出

    [akshay@localhost tmp]$ awk 'FNR==NR{A[$1] = $2; next}($1 in A) && $2 > A[$1]' file1 file2
    AAAA 700
    

    【讨论】:

      【解决方案2】:
      awk 'FNR==NR{a[$1]=$2 FS $3;next}{ print $0, a[$1]}' file2.txt file1.txt|awk '$3 > $2' |awk '{print $1" "$3}'
      AAAA 700
      

      这达到了我想要的输出

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-16
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多