同じコードで生成された2つのファイル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
これら2つの列をマージして新しいファイルを取得したいと思います。
id hub klos
3 2 bis
2 5 jus
4 2 bis
5 2
8 3 jus
7 2 bis
正確:
ファイルの残りの部分はすべて同じで、
klos
ファイル間で列のみが変更されます。これは、47列の物理ファイルのサブサンプルです。
行と列に関する限り、まったく同じファイルです。
klos列の場合、最初のファイルに書き込みがあると、他のファイルの同じ行に書き込みができません。
マージする方法をオンラインで検索してみましたが、2つではなく1つのファイルの例だけが見つかりました。何をすべきか知っていますか?ありがとう
ベストアンサー1
すべてのUnixシステムのすべてのシェルで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