[awk shell] 判断一个文件中内容在另一个文件中

判断test2.txt 中第一列的内容在test1.txt 中,
很简单的一条awk命令即可:

awk ‘NR==FNR{a[$1]=$2;next}NR!=FNR{if($1 in a)print $0":"a[$1]}’ test1.txt test2.txt

说明:
FNR和NR的特性,当扫描第一个文件时,FNR与NR相同。
先对第一个文件进行扫描,将每行的内容以键值对的形式保存到a数组中,
再对第二个文件进行扫描,判断所检查的列的内容是否在数组a中,
然后按照自己的需求打印结果即可。

实例:
head test1.txt
6317748047149271041 0Es99c/EYEvEqPLp/+VD3ZeKgKAeESdE/nHG7w==.
6317749218387691520 obVvv9a6MjlpBhf0sPUh8g6epvL8JC5kwmDu1g==.
6317749244375597057 XWoFe1SCMwj0EOVTjCRZGOgl0vJzVJ64jXSiSg==.
6317749255171735553 /daw53rXk7tE8LAzOLukiBdIkLMWez/vzGpD7g==.
2017063002175732 FYbSb0QI/Qc98+0Ncjx1MaYSkiJkL5ZR.
6317749243570290688 0Gihft56Avzb03G+/zHrf1MOG0713b234zVm4g==.
2017063002175771 edZVmzuB3+X2PWX6toM+B4IV1GYNuiNZ.
6317749268736115712 bFdrlx4aTu2iWDVFqktw9phbrf0Fvxy232h5jw==.
2017063002175672 fsr81Wt52rGCQWZnwkja225pZ8R1TKGr.
2017063002175709 uISbF77c1cnAr6ra15gpNMfD9VK22waA.

head test2.txt
6317749382120735745
6317749413565431809
6317749484327536640
6317749530297106432
6317750153209971712
6317750128748791808
6317750206070785025
6317750236047475713
6317750930234147841
6317750933660895233

你可能感兴趣的:(shell)