我有两个不同的脚本,可以按一个匹配的列合并文件。
file1.tsv-4列,用制表符
分隔1 LAK c.66H>T p.Ros49Kos
2 OLD c.11A+1>R p.Ill1639Los
3 SRP c.96V-T>X p.Zub%D23
4 HRP c.1S>T p.Lou33aa
file2.tsv-14列,由制表符分隔
LAK "empty_column" c.66H>T ......
SRP "empty_column" c.96-T>X ......
Ouptut.tsv-file2.tsv中的所有列,如果匹配则在file1的第一列之后。
LAK "empty_column" c.66H>T ......1
SRP "empty_column" c.96-T>X ......3
我正在使用这两个脚本,但是不起作用:
awk -v FILE_A="file1.tsv" -v OFS="\t" 'BEGIN { while ( ( getline <
FILE_A ) > 0 ) { VAL = $0 ; sub( /^[^ ]+ /, "", VAL ) ; DICT[ $3 ] =
VAL } } { print $0, DICT[ $3 ] }' file2.tsv
或
awk 'NR==FNR{h[$3] = $1; next} {print h[$3]}' file1.tsv file2.tsv
感谢帮助。
答案 0 :(得分:1)
您可能想使用join
命令将第一个文件的第2列与第二个文件的第1列相连:
join --nocheck-order -1 2 -2 1 file1.tsv file2.tsv
一些笔记
cut
命令,或这次使用awk
。