grep 用于模式列表中的重复值

Rol*_*oli 4 grep bash awk

我有文件 A.txt,它是唯一 ID(第 1 列)及其相应值(第 2 列)的列表:

A.txt

ABC1D_T1_B1  123.4
ABC2D_T1_B2  146.7
ABC3D_T1_B1  567.8
ABC4D_T0_B2  96.8
ABC1D_T0_B1  145.9
Run Code Online (Sandbox Code Playgroud)

第二个文件是 B.txt,不是唯一的,但有重复的条目

ABC1D_T1_B1
ABC1D_T1_B1
ABC2D_T1_B2
ABC3D_T1_B1
ABC3D_T1_B1
ABC4D_T0_B2
ABC1D_T0_B1
ABC1D_T0_B1
Run Code Online (Sandbox Code Playgroud)

如何从 A.txt grep B.txt 并报告重复列表的 col 2 的值

结果:

ABC1D_T1_B1  123.4
ABC1D_T1_B1  123.4
ABC2D_T1_B2  146.7
ABC3D_T1_B1  567.8
ABC3D_T1_B1  567.8
ABC4D_T0_B2  96.8
ABC1D_T0_B1  145.9
ABC1D_T0_B1  145.9
ABC1D_T0_B1  145.9
Run Code Online (Sandbox Code Playgroud)

通常,如果 B.txt 中存在唯一条目,则

grep -Fw -f B.txt A.txt >Result.txt
Run Code Online (Sandbox Code Playgroud)

如何使用 grep 为多个重复条目执行此操作?

jhe*_*ran 5

你可以通过使用一个简单的join

join A.txt B.txt
Run Code Online (Sandbox Code Playgroud)

但是,为了工作,两个文件都必须按连接键排序(这里是第一个(空白分隔)字段)。要做到这一点,只需使用sort -b filename.