我有文件 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
第二个文件是 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
如何从 A.txt 中 grep B.txt 并报告重复列表的第 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
通常,如果 B.txt 中存在唯一条目,则
grep -Fw -f B.txt A.txt >Result.txt
如何使用 grep 对多个重复条目执行此操作?
答案1
您可以使用简单的方法来做到这一点join
:
join A.txt B.txt
但是,为了工作,两个文件必须按连接键(此处为第一个(空白分隔)字段)排序。为此,只需使用sort -b filename
.
答案2
因为您还标记了awk
:
awk 'FNR == NR {a[$1] = $0; next}; {print a[$1]}' A.txt B.txt
我不认为单个可以做到这一点,而是和 的grep
组合:xargs
grep
xargs -I{} grep -Fw -- {} A.txt < B.txt