【发布时间】:2021-11-23 16:10:40
【问题描述】:
我一直试图找出两个 CSV 文件中对应字段之间的值差异
$ cat f1.csv
A,B,25,35,50
C,D,30,40,36
$
$ cat f2.csv
E,F,20,40,50
G,H,22,40,40
$
期望的输出:
5 -5 0
8 0 -4
我可以这样实现:
$ paste -d "," f1.csv f2.csv
A,B,25,35,50,E,F,20,40,50
C,D,30,40,36,G,H,22,40,40
$
$ paste -d "," f1.csv f2.csv | awk -F, '{print $3-$8 " " $4-$9 " " $5-$10 }'
5 -5 0
8 0 -4
$
有没有更好的方法也可以单独使用 'awk' 来实现它,而不需要 'paste' 命令。
【问题讨论】:
-
是的,但它使它更难以理解。
-
每个文件可以多于2行吗?如果行数不匹配会发生什么情况(例如,
f1.csv有 3 行,f2.csv有 1 或 8 行)?总会有 5 个逗号分隔的字段吗?我们会一直在比较字段#3、#4、#5,还是我们需要动态确定哪些字段是数字的?我们是否必须担心字段中的数字值与另一个文件的“匹配”字段中的非数字值?