file1.txt(タブ区切り、2番目の列にはスペースを含む文字列を含む):
A Golden fog
B Vibrant rainbow and sunny
C Jumping, bold, and bright
D Chilly/cold/brisk air
file2.txt(タブ区切り):
D01 Ti600 A
D02 Ti500 B
D16 Ti700 C
D20 Ti800 B
file3.txtの目的の出力(タブ区切り文字を含む):
D01 Ti600 A Golden fog
D02 Ti500 B Vibrant rainbow and sunny
D16 Ti700 C Jumping, bold, and bright
D20 Ti800 B Vibrant rainbow and sunny
または少なくともfile3.txtの場合:
D01 Ti600 Golden fog
D02 Ti500 Vibrant rainbow and sunny
D16 Ti700 Jumping, bold, and bright
D20 Ti800 Vibrant rainbow and sunny
頑張りました
awk 'NR==FNR{a[$1]=$2;next}{$3=a[$1];}1' file1.txt file2.txt > file3.txt
しかし私はちょうど次を得ます:
D01 Ti600
D02 Ti500
D16 Ti700
D20 Ti800
タブの代わりにスペース区切り文字があり、列2の後にスペースがあり、列3には値がありません。
ご希望の結果をお手伝いいただきありがとうございます。
答え1
ファイルはタブで区切られていますが、実際には使用しません。公開鍵A
などもB
次の場所にあります。第三現場でfile2.txt
。だから:
$ awk 'BEGIN{OFS=FS="\t"} NR==FNR{a[$1]=$2;next}{$4=a[$3];}1' file1.txt file2.txt
D01 Ti600 A Golden fog
D02 Ti500 B Vibrant rainbow and sunny
D16 Ti700 C Jumping, bold, and bright
D20 Ti800 B Vibrant rainbow and sunny
または(少し短い)
$ awk -F'\t' 'NR==FNR{a[$1]=$2;next}{print $0"\t"a[$3]}' file1.txt file2.txt
D01 Ti600 A Golden fog
D02 Ti500 B Vibrant rainbow and sunny
D16 Ti700 C Jumping, bold, and bright
D20 Ti800 B Vibrant rainbow and sunny