Unixでどのコマンドを使うべきかわかりません。
次のようなファイルがあるとしましょう。
A 23
B 52
C 36
F 25
2番目のファイルには3つの列があります。
A aligator 2
B panda 3
C bear 4
D pig 1
E yeti 0
F shark 9
G dog 10
H cat 1
最初の列の値がファイル間で一致する場合は、最初の列の値(1つのファイル)を2番目の列の値(2つのファイル)に置き換えたいと思います。
出力例:
aligator 23
panda 52
bear 36
shark 25
誰が私を助けることができますか?
最高。
答え1
ファイルがソートされたら、join
coreutilsを使用できます。
join -o '2.2 1.2' file1 file2
出力:
aligator 23
panda 52
bear 36
shark 25
答え2
awk
仕事のための素晴らしいツールは次のとおりです。
awk 'NR==FNR{a[$1]=$2;next}a[$1]{print $2,a[$1]}' file1 file2
最初のファイルを読み取ると(FN==FNR
)、a
配列は2番目の列の値で埋められ、最初の列からインデックス付けされます。次に、2番目のファイルが処理されると、file1の2番目の列と2番目の列が印刷されます。
出力:
aligator 23
panda 52
bear 36
shark 25