根据文件的第 1 和第 2 列以及第二个文件的第 3 和第 4 列加入 2 个文件
join 2 files based on 1st & 2nd column of file AND 3rd & 4th column of second file
文件 1
rs12345 G C
rs78901 A T
文件 2
3 22745180 rs12345 G C,G
12 67182999 rs78901 A G,T
期望的输出
3 22745180 rs12345 G C
12 67182999 rs78901 A T
我试过了
awk 'NR==FNR {h[] = ; next} {print ,,,h[]}' file1 file2
已生成输出
3 22745180 rs12345
打印 file2 的前 4 列和 file1 的第 3 列作为输出中的第 5 列
您可以使用这个 awk
:
awk 'FNR == NR {map[,] = ; next} (,) in map {$NF = map[,]} 1' f1 f2 | column -t
3 22745180 rs12345 G C
12 67182999 rs78901 A T
更具可读性的版本:
awk '
FNR == NR {
map[,] =
next
}
(,) in map {
$NF = map[,]
}
1' file1 file2 | column -t
仅将 column -t
用于表格输出。
在您提供的情况下(两个文件中的行都匹配)这将起作用
paste file1 file2 | awk '{print ,,,,}'
文件 1
rs12345 G C
rs78901 A T
文件 2
3 22745180 rs12345 G C,G
12 67182999 rs78901 A G,T
期望的输出
3 22745180 rs12345 G C
12 67182999 rs78901 A T
我试过了
awk 'NR==FNR {h[] = ; next} {print ,,,h[]}' file1 file2
已生成输出
3 22745180 rs12345
打印 file2 的前 4 列和 file1 的第 3 列作为输出中的第 5 列
您可以使用这个 awk
:
awk 'FNR == NR {map[,] = ; next} (,) in map {$NF = map[,]} 1' f1 f2 | column -t
3 22745180 rs12345 G C
12 67182999 rs78901 A T
更具可读性的版本:
awk '
FNR == NR {
map[,] =
next
}
(,) in map {
$NF = map[,]
}
1' file1 file2 | column -t
仅将 column -t
用于表格输出。
在您提供的情况下(两个文件中的行都匹配)这将起作用
paste file1 file2 | awk '{print ,,,,}'