最初の列に従って 2 つのファイル内の共通値を置き換えるにはどうすればよいでしょうか?
ファイル1(1.txt)があります:
CH063_01084
CH063_01083
CH063_13925
CH063_14473
ファイル2(2.txt):
CH063_01083 FGSG_16349 4
CH063_14473 FGSG_16350 5
出力ファイルは次のようになります:
CH063_01084
CH063_01083 FGSG_16349 4
CH063_13925
CH063_14473 FGSG_16350 5
答え1
使用できますjoin
このために:
join -a 1 file1 file2
join
共通フィールドに基づいてファイルを結合します。デフォルトでは、両方のファイルの最初のフィールドです。は、-a 1
ペアがなかった場合に最初のファイルの行を含めることを意味します。最初のフィールド以外のフィールドを選択するには、 を使用して、-1 N -2 M
からフィールド Nfile1
と からフィールド Mを選択しますfile2
。
答え2
以下を使用できますjoin
:
$ join -a 1 file1.txt file2.txt
A
B asas 4
C
D addd 5
ファイルがソートされていない場合:
join -a 1 <(sort 1.txt) <(sort 2.txt)
しかし、フォーマットが失われます。次のものを使用できますperl
:
$ perl -anle ' $h{$F[0]} = $_;
END { print for sort values %h }
' file1.txt file2.txt