这里对AWK比较陌生。想比较两个文件。前两列是匹配的,以便比较第三列。第三列需要更大100,才能从第二个文件中打印出该行。一些数据可能存在于一个文件中,但在另一个文件中不存在。我不认为这对AWK很重要,但是对于分隔来说,空格并不是很一致的。这里有个小狙击手。
File1
USTL_WR_DATA MCASYNC@L -104 -102 -43 -46
USTL_WR_DATA SMC@L 171 166 67 65
TC_MCA_GCKN SMC@L -100 -100 0 0
WDF_ARRAY_DW0(0) DCDC@L 297 297 101 105
WDF_ARRAY_DW0(0) MCASYNC@L 300 300 50 50
WDF_ARRAY_DW0(0) MCMC@L 12 11 34 31File2
TC_MCA_GCKN SMC@L 200 200 0 0
WDF_ARRAY_DW0(0) DCDC@L 842 867 271 270
WDF_ARRAY_DW0(0) MCASYNC@L 300 300 50 50
WDF_ARRAY_DW0(1) SMCw@L 300 300 50 50
WDF_ARRAY_DW0(2) DCDC@L 896 927 279 286
WDF_ARRAY_DW0(2) MCASYNC@L 300 300 50 50输出
TC_MCA_GCKN SMC@L 200 200 0 0
WDF_ARRAY_DW0(0) DCDC@L 842 867 271 270这是我的密码。不起作用。不知道为什么。
awk 'NR==FNR{a[$1,$2];b[$3];next} (($1,$2) in a) && ($3> (b[$1]+100))' File1 File2NR==FNR{$1,2;b$3;next}从第一个文件(我有问题使其为一个)生成两个数组,前两列进入a以确认我们正在比较相同的东西,而我用来比较的第三列由于较晚的模式高似乎是比较合理的断言。
($1,$2)确保第二个文件中的前两列是我们要比较的。
& ($3> (b$1+100))‘我认为这就是问题所在。应该查看第二文件列3是否大于或大于第一文件列3(数组b中的第一列和唯一列)。
发布于 2018-10-23 21:16:11
您需要用相同($1,$2)的组合输入值。由于我们不将a用于任何其他目的,所以只需将值存储在那里即可。
$ awk 'NR==FNR {a[$1,$2]=$3; next}
($1,$2) in a && $3>a[$1,$2]+100' file1 file2
TC_MCA_GCKN SMC@L 200 200 0 0
WDF_ARRAY_DW0(0) DCDC@L 842 867 271 270https://stackoverflow.com/questions/52957603
复制相似问题