我需要合并存储在变量中的两个数据集。此合并需要基于"$x"
第一列和"$y"
-->echo "$x"
12 hey
23 hello
34 hi
-->echo "$y"
aa bb 12
bb cc 55
ff gg 34
ss ww 23
通过以下命令,我设法将$x
的第一列的值存储在a[]
中,并检查了$y
的第三列,但没有得到我的期望,有人可以吗在这里帮助。
awk 'NR==FNR{a[$1]=$1;next} $3 in a{print $0,a[$1]}' <(echo "$x") <(echo "$y")
aa bb 12
ff gg 34
ss ww 23
预期结果:
aa bb 12 hey
ff gg 34 hi
ss ww 23 hello
答案 0 :(得分:2)
您的答案几乎是正确的:
awk 'NR==FNR{a[$1]=$2;next} ($3 in a){print $0,a[$3]}' <(echo "$x") <(echo "$y")
请注意a[$1]=$2
和print $0,a[$3]
。
答案 1 :(得分:-1)
join -1 1 -2 3 <(sort -k 1b,1 a.txt) <(sort -k 3b,3 b.txt) |awk '{print $3, $4, $1, $2 }'
可能是使用两个数字列上的join在两个文本文件a.txt和b.txt中输入的一种解决方案。
虽然它不保留顺序。如果很重要,您可能必须再次排序。