- 论坛徽章:
- 1
|
各位大神,初学者求指教:
有两个文件s d,输出结果要用d的$1与s的$1对比,如果相同则输出d行全部结果及s行后几列,如果d的$1在s中$1找不到则输出当前d行
cat s
1111 something1 something2
2222 something3 something4
3333 something5 something6
4444 something7 something8 something9
cat d
4444 something10 something11
2222 something12 something13
9999 something14 something15
目标结果
4444 something10 something11 something7 something8 something9
2222 something12 something13 something3 something4
9999 something14 something15
我可以导出相匹配的行,但是加上else判断不匹配行时,输出不正常,在d中的9999结果出不来,并且加了else后,感觉多了许多空行,始终看不出来问题在哪,麻烦各位大神指点一下,谢谢
并且有一个问题想请教一下,为什么我执行后给出结果是2222在第一行而4444在第二行,AWK处理是读一行处理一行,按我理解先调用d文件,应该是先出4444的结果才对呀,是我哪里理解有问题?谢谢
bash$ awk 'NR==FNR{a[$1]=$0;next}NR>FNR{if($1 in a){print a[$1],$2,$3,$4}}' d s
2222 something12 something13 something3 something4
4444 something10 something11 something7 something8 something9
bash$ awk 'NR==FNR{a[$1]=$0;next}NR>FNR{if($1 in a){print a[$1],$2,$3,$4} else {print a[$1]}}' d s
2222 something12 something13 something3 something4
4444 something10 something11 something7 something8 something9
bash$
|
|