假设我有这两个制表符分隔文件,其中第一个文件中的第二列包含第二个文件第一列的匹配值,我想获得这样的输出:
FILEA:
1 A
2 B
3 C
FILEB:
A Apple
C Cinnabon
B Banana
我想要这样的输出:
1 Apple
2 Banana
3 Cinnabon
我可以为此编写一个脚本,但我想知道如何在awk
或perl
中创建一行。
答案 0 :(得分:2)
awk 'BEGIN{FS=OFS="\t"}NR==FNR{a[$1]=$2;next}{$2=a[$2]}1' f2 f1
答案 1 :(得分:1)
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