将一个文件的内容与另一个文件匹配,然后返回第二列

时间:2019-03-24 21:41:25

标签: bash unix

所以我有两个txt文件 file1.txt

s
j
z
z
e

和file2.txt

s h
f a
j e
k m
z l
d p
e o

我想做的是将file1的第一个字母与文件2的第一个字母匹配,然后返回文件2的第二列。因此,例如,排除的输出将是

h
e
l
l
o

我正在尝试使用join file1.txt file2.txt,但这只是打印出整个第二个文件。不知道如何解决此问题。谢谢。

1 个答案:

答案 0 :(得分:3)

这是awk的经典作品:

$ awk 'NR==FNR{a[$1]=$2;next}{print a[$1]}' file2 file1
h
e
l
l
o

解释:

$ awk '
NR==FNR {       # processing file2
    a[$1]=$2    # hash records, first field as key, second is the value
    next
} {             # second file
    print a[$1] # output, change the record with related, stored one
}' file2 file1