从2个文件比较2列并打印基础条件

时间:2016-01-27 04:28:22

标签: shell unix awk

我有两个文件,fileA(错误代码列表和阈值)和fileB(错误日志),如下所示:

FileA

(ERRCODE-000004) 100
(ERRCODE-000090) 50
(ERRCODE-000110) 100
(ERRCODE-000092) 50  
(ERRCODE-000419) 100

FileB

user@hostname 3 (ERRCODE-000003) This is error description
user@hostname 14 (ERRCODE-000090) This is error description
user@hostname 871 (ERRCODE-000090) This is error description

我想在FileB中打印包含来自FileA 第一列的错误代码的行,而的错误计数大于{{1}中的阈值}。

fileA

预期结果:

(column three in fileB = column one in fileA) AND
(column two in fileB > column two in fileA )

我试过了

user@hostname 871 (ERRCODE-000090) This is error description

但是第二个条件是硬编码的(awk 'NR==FNR{a[$1]++;next}a[$3] && $2>=50' fileA fileB )。

1 个答案:

答案 0 :(得分:1)

您可以使用in关键字检查数组中是否存在密钥:

awk 'NR==FNR{a[$1]=$2;next} $3 in a && $2>a[$3]' filea fileb

请注意,这假定filea每个代码只有一个条目