有两个文件我要提取数据:
file1.txt:
Type Number ID Element Email
Zed 21-2 9 Bladefile2.txt:
Name Order Email_Address
Ken 19 ken@gmail.com
Tom 21 tom@gmail.com
Ray 23 ray@gmail.com如何将两个文件组合成具有以下结果的文件:
Type Number ID Element Email
Zed 21-2 9 Blade tom@gmail.com以下是我以前尝试过的:
awk 'NR==1{print $0;next} NR==FNR{a[$2]=$1"\t"$3"\t"$4";next} {if($2 in a){print(a[$2]"\t"$3)}}' file1.txt file2.txt我想我不能得到结果,因为如果声明有一些问题。我怎样才能得到通缉的结果?
发布于 2018-09-13 07:46:01
$ awk 'BEGIN{print "Type Number ID Element Email"}NR==FNR{Arr[$2]=$NF;next}{split($2,b,"-");if(b[1] in Arr){print $0,Arr[b[1]]}}' file2.txt file1.txt
Type Number ID Element Email
Zed 21-2 9 Blade tom@gmail.comArr[$2]=$NF ->将电子邮件地址存储在列2 split($2,b,"-") ->拆分第二列值的数组中,并将其用于查找。
发布于 2018-09-13 14:43:50
awk '
NR == FNR {email[$2] = $3; next}
FNR == 1 {print; next}
{
for (order in email)
if ($2 ~ "^" order "\\>") {
print $0, email[order]
break
}
}
' file2.txt file1.txt | column -tType Number ID Element Email
Zed 21-2 9 Blade tom@gmail.com该正则表达式在number字段的起始处(^)查找序号,其中包含一个单词边界(\>),以便来自file2的序号"21“与file1中的"211-1”号不匹配。
https://unix.stackexchange.com/questions/468724
复制相似问题