cat fiel1.txt
cheng 600
huang 500
pan 400
yin 300
cat file2.txt
600 a
300 c在我执行完
awk 'NR==FNR{a[$1]=$2;next}($2 in a){print $1,$2,a[$2]}' f2.txt f1.txt结果如下:
cheng 600 a
yin 300 c我还想打印不在数组a中的列。如下所示:
cheng 600 a
huang 500
pan 400
yin 300 c我怎么才能得到结果。我试着命令如下:
awk 'NR==FNR{a[$1]=$2;next}($2 in a){print $1,$2,a[$2]}($2 not in a){print $1,$2,a[$2]}' f2.txt f1.txt但失败了。
发布于 2017-12-05 02:42:06
$ awk 'NR==FNR{a[$1]=$2;next} {if($2 in a)print $1,$2,a[$2]; else print $1,$2}' f2.txt f1.txt
cheng 600 a
huang 500
pan 400
yin 300 c讨论
你有:
($2 in a){print $1,$2,a[$2]}只有在$2在a中时,才会打印。我们将其替换为:
if($2 in a)print $1,$2,a[$2]; else print $1,$2这个打印$1,$2,a[$2]是$2在a中。否则,它只打印$1,$2。
简单版
如果您介意一些无关的尾随空白,我们可以使用更简单的:
$ awk 'NR==FNR{a[$1]=$2;next} {print $1,$2,a[$2]}' f2.txt f1.txt
cheng 600 a
huang 500
pan 400
yin 300 chttps://stackoverflow.com/questions/47645177
复制相似问题