2

これらの 2 つのタブ区切りファイルがあり、最初のファイルの 2 番目の列に 2 番目のファイルの最初の列と一致する値が含まれているとします。次のような出力を得たいと思います。

ファイル A:

1    A
2    B
3    C

ファイル B:

A    Apple
C    Cinnabon
B    Banana

次のような出力が必要です。

1   Apple
2   Banana
3   Cinnabon

awkこのためのスクリプトを書くことができますが、それを 1 行または1 行で作成する方法を知りたいperlです。

4

3 に答える 3

2
awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$1]=$2;next}{$2=a[$2]}1' f2 f1
于 2013-06-14T02:37:05.440 に答える
1

GNU sed ワンライナー

sed -r 's:\s*(\S+)\s+(\S+):/\\s*\\S\\+\\s\\+\1/s/\\(\\s*\\S\\+\\s\\+\\)\1/\\1\2/:' fileB | sed -f - fileA

..出力:

りんご1個
2 バナナ
3 シナボン
于 2013-06-14T15:17:24.100 に答える
0

必要なコマンドは次のとおりです。

$ awk 'FNR==NR{a[$1]=$2 FS $3;next}{$2=a[$2]; print}' file2 file1
1 Apple
2 Banana
3 Cinnabon
于 2013-06-14T02:01:37.553 に答える