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

标签 linux shell sed awk

输入1:

1    s1
100  s100
90   s90

输入2:

a    1
b    3
c    7
d    100
e    101
f    90

输出:

a    1
d    100
f    90

我知道 join 可以做到这一点,但它需要 (1) 对这些公共(public)字段进行排序 (2) 在加入后,我需要从 input1 中删除第二列。有没有人对此有更好的解决方案。

最佳答案

这是使用 awk 的一种方法:

awk 'FNR==NR { a[$1]; next } $2 in a' file1 file2

结果:

a    1
d    100
f    90

关于linux - 使用一个文件从另一个文件中提取指定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13834218/

相关文章:

android - 无法通过 Ubuntu 12.04 上的 Fastboot 解锁 Android bootloader - 等待设备

linux - VMWare Mavericks 中的跳跃、生涩、不稳定的鼠标

linux - 如何从 shell/bash 脚本中更改 linux 上的桌面墙纸

linux - 如何使用 lynx 命令行发布 JSON 数据?

awk - 使用单个 sed 调用作为前 H 行的头部和最后 T 行的尾部

linux - 如何使用 SED 替换文件中的撇号 '

linux - Bash:从文件中读取命令

linux - 如何使用 shell 脚本将单词转换为字符

bash - 如何在 shell 中创建自己的 bash 命令选项

linux - BASH:Sudo Cat 对 Shell 脚本的多行命令