2个文件中2列的常用值

时间:2013-06-14 01:44:06

标签: awk

假设我有这两个制表符分隔文件,其中第一个文件中的第二列包含第二个文件第一列的匹配值,我想获得这样的输出:

FILEA:

1    A
2    B
3    C

FILEB:

A    Apple
C    Cinnabon
B    Banana

我想要这样的输出:

1   Apple
2   Banana
3   Cinnabon

我可以为此编写一个脚本,但我想知道如何在awkperl中创建一行。

3 个答案:

答案 0 :(得分:2)

awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$1]=$2;next}{$2=a[$2]}1' f2 f1

答案 1 :(得分:1)

GNU sed oneliner

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

..输出:

1    Apple
2    Banana
3    Cinnabon

答案 2 :(得分:0)

您想要的命令是:

$ awk 'FNR==NR{a[$1]=$2 FS $3;next}{$2=a[$2]; print}' file2 file1
1 Apple
2 Banana
3 Cinnabon