使用文件从另一个文件中提取指定的行

Han*_*Sun 2 linux shell awk sed

输入1:

1    s1
100  s100
90   s90
Run Code Online (Sandbox Code Playgroud)

输入2:

a    1
b    3
c    7
d    100
e    101
f    90
Run Code Online (Sandbox Code Playgroud)

输出:

a    1
d    100
f    90
Run Code Online (Sandbox Code Playgroud)

我知道join可以这样做,但它需要(1)在连接后对这些公共字段(2)进行排序,我需要从input1中删除第二列.有没有人有更好的解决方案.

Ste*_*eve 5

这是使用的一种方式awk:

awk 'FNR==NR { a[$1]; next } $2 in a' file1 file2
Run Code Online (Sandbox Code Playgroud)

结果:

a    1
d    100
f    90
Run Code Online (Sandbox Code Playgroud)