最初の列に基づいて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
N fromfile1
およびM from選択フィールドを使用します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