【发布时间】:2018-07-15 03:03:06
【问题描述】:
我有以下两个文件;
$ cat file1
1 4
2 5
3 6
$ cat file2
4 2 N1
4 1 Y1
6 2 N2
6 3 Y2
2 5 Y3
我对@987654325@的第三栏感兴趣。所以我想加入基于两个第一列的两个文件,它们是 ID 列。经过大量搜索(例如here、here 或here),我尝试了一些方法,它原则上有效;
awk 'FNR==NR{a[$1,$2];next}; ($1, $2) in a || ($2, $1) in a{print $3}' file1 file2
Y1
Y2
Y3
或者,
awk 'FNR==NR{a[$1,$2]=$3;next}; ($1, $2) in a || ($2, $1) in a{print $0, a[$1,$2]}' file2 file1
1 4
2 5 Y3
3 6
但不是我想要的确切输出;
1 4 Y1
2 5 Y3
3 6 Y2
file1 中 ID 的顺序很重要,因为第一列是男性,第二列是女性。在file2 中,这些列可能是男性也可能是女性。
【问题讨论】:
标签: unix awk text-processing