我的linux服务器中有两个文件:
文件_1
2018-09-01-00:00:03|911234567899|919535144580
2018-09-01-00:00:06|916724367238|919535144580
2018-09-01-00:00:07|911673617378|919535144580
2018-09-01-00:00:09|916721377382|919535144580
2018-09-01-00:00:13|910933214512|919535144580
2018-09-01-00:00:13|919777823434|919535144580
2018-09-01-00:00:15|919562343456|919535144580
2018-09-01-00:00:16|918867558865|919535144580
File_2
S NO.,Column1,Column2,Column3
72070,9112345,TGM,AP
72071,9167243,BGM,MP
72072,9116736,AGM,KN
72073,9167213,TGM,AP
预期输出:
911234567899,TGM,AP
916724367238,BGM,MP
911673617378,AGM,KN
916721377382,TGM,AP
910933214512,NA,NA
我想要使用awk
或bash脚本的一行命令,该命令应检查File_2中的column1并将其检查到File_1第二列的前6位,并打印预期的输出。
答案 0 :(得分:0)
不确定,由于您显示的输出与描述不完全相同,请尝试以下方法。
awk 'FNR==NR{a[$2]=$3","$4;next} {$2=substr($2,1,7) in a?$2","a[substr($2,1,7)]:$2",NA,NA";print $2}' FS="," Input_file_2 FS="|" Input_file_1
现在也可以添加一种非衬里形式的解决方案。
awk '
FNR==NR{
a[$2]=$3","$4
next
}
{
$2=substr($2,1,7) in a?$2","a[substr($2,1,7)]:$2",NA,NA"
print $2
}
' FS="," File_2 FS="|" File_1