我有两个文件bla.tsv
(FS= \t
) 和blo.tsv
(FS= \t
) 由相同的代码生成。
bla.tsv
:
id hub klos
3 2 bis
2 5
4 2 bis
5 2
8 3
7 2 bis
blo.tsv
:
id hub klos
3 2
2 5 jus
4 2
5 2
8 3 jus
7 2
我想合并klos
这两个列以获得一个新文件:
id hub klos
3 2 bis
2 5 jus
4 2 bis
5 2
8 3 jus
7 2 bis
精确 :
文件的所有其余部分始终相同,只有
klos
文件之间的列发生变化。这是我的真实文件的子采样,我的真实文件有 47 列。
就行和列而言,它是完全相同的文件。
对于 klos 列,当第一个文件有写入内容时,另一个文件不可能在同一行中有写入内容
我尝试在线搜索如何合并,但只找到一个文件的示例,而不是两个文件。你知道该怎么做吗?谢谢
答案1
在每个 Unix 机器上的任何 shell 中使用任何 awk:
$ awk 'BEGIN{FS=OFS="\t"} NR==FNR{klos[NR]=$3; next} $3==""{$3=klos[FNR]} 1' blo.tsv bla.tsv
id hub klos
3 2 bis
2 5 jus
4 2 bis
5 2
8 3 jus
7 2 bis