【问题标题】:awk to print lines containing lower values in two csv files [closed]awk 在两个 csv 文件中打印包含较低值的行 [关闭]
【发布时间】:2020-06-08 10:45:48
【问题描述】:

file1.csv

1104,2020-05-04 00:00:00,ABC 
1911,2020-05-05 00:00:00,XYZ 
1298,2020-05-06 00:00:00,PQR 
1197,2020-05-06 00:00:00,XYZ 
1086,2020-05-07 00:00:00,PQR 
976,2020-05-07 00:00:00,ABC 
1546,2020-05-08 00:00:00,XYZ 
1695,2020-05-11 00:00:00,ABC 
2046,2020-05-12 00:00:00,XYZ 
1875,2020-05-13 00:00:00,ABC 

file2.csv

1104,2020-05-04 00:00:00,ABC 
1921,2020-05-05 00:00:00,XYZ 
1298,2020-05-06 00:00:00,PQR 
1197,2020-05-06 00:00:00,XYZ 
187,2020-05-07 00:00:00,PQR 
976,2020-05-07 00:00:00,ABC 
1546,2020-05-08 00:00:00,XYZ 
695,2020-05-11 00:00:00,ABC 
2047,2020-05-12 00:00:00,XYZ 
1875,2020-05-13 00:00:00,ABC 

AWK 应该比较所有三个字段。第二个和第三个字段应该在 file1 和 fil2 之间匹配,它只会打印文件 1 中第一个字段 > file2 的那些行

在上面的例子中它应该打印 -

187,2020-05-07 00:00:00,PQR
695,2020-05-11 00:00:00,ABC

【问题讨论】:

  • 第 2 和第 3 字段将始终匹配或仅在这些字段匹配时才打印行?
  • 请分享到目前为止您尝试了什么?

标签: shell unix awk


【解决方案1】:
awk -F, 'NR==FNR{a[$2,$3]=$1; next} a[$2,$3]>$1' file1 file2

【讨论】:

  • 能否请您对命令进行一些重点说明。我只能理解它基于 ray 的比较
猜你喜欢
  • 1970-01-01
  • 2012-09-25
  • 2012-09-05
  • 2022-11-12
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2015-01-20
相关资源
最近更新 更多