我需要帮助合并两个文件。
第一档:
header1
raw1 spec1/W a b c d
raw2 spec2/W a c d d
raw3 spec3/W a d b b
第二档:
headerXX
headerY
headerZ
z a d a r z j z u o p 45600 raw1 a d spec1 b d a ....
d a r a f g h z u i d 6054 raw2 a f a s a spec2 ...
k o k o j o p s t d v 5000 raw3 d f a f g h ...
输出文件:
header1
raw1 spec1/W a b c d 45600
raw2 spec2/W a c d d 6054
raw3 spec3/W a d b b (there won't be number because no spec.)
我想将第一个文件中的$ 1st与第二个文件中的$ 13th合并,然后在第一个文件中将$ 2nd(没有“/ W”)拆分为第二个文件中的$ 16或$ 19。如果匹配打印第一个文件和第二个文件12美元,如果missmatch只打印$ 1文件。
如果可以帮到你:
第一场比赛:
awk -F'\t' -v OFS="\t" 'FNR==NR{a[$1]++; next}; $13 in a {print $0,??}'
并且对于第二场比赛我认为如下:
awk -F'\t' -v OFS="\t" '{split($2,a,"/") print $1,a[1],$2,$3,$4,$5,$6}' | awk 'FNR==NR{a[$2]++; next}; $16 || $19 in a {print $0,??}'
非常感谢你。
答案 0 :(得分:1)
这样做......
$ awk 'NR==FNR{a[$13,$16]=a[$13,$19]=$12; next}
{split($2,s,"/"); print $0, a[$1,s[1]]}' file2 file1
header1
raw1 spec1/W a b c d 45600
raw2 spec2/W a c d d 6054
raw3 spec3/W a d b b