【发布时间】:2020-04-07 05:00:14
【问题描述】:
我正在尝试与 Ubuntu 系统上的文件进行比较。两个文件具有相同的两列结构,如果第二列的值与给定行匹配,则减去同一行的列 1 的值。
我已经尝试了几件事,我得到的最接近的是这个命令:
awk 'NR==FNR{a[$1]=$1;b[$2]=$2;next} {if ($2 in b) print $1-a[$1]," ",$2}' file1 file 2
但我想我有问题,因为结果似乎只承认满足第二列匹配条件的行,但只允许第一列具有相同值的行。
例如:
文件 1:
10 A
20 B
30 C
10 D
文件2:
10 A
20 E
20 F
50 D
应该返回:
0 A
-40 D
返回:
0 A
【问题讨论】:
-
以与编写代码相同的方式格式化示例输入/输出。
-
awk 可能不是最好的选择。你会考虑使用 python 解决方案吗?
-
@stark 对于这个问题,在简洁性、可移植性、效率等方面,很难比 awk 解决方案做得更好。
标签: linux if-statement awk