grep使用grep结果

问题描述 投票:2回答:3

假设我有两个包含属性名称和属性的文件,其中不同的数据存储在两个文件中:

1.TXT:

abc12      3@     50
edf13      4@     50
dde8       3@     50

2.txt

abc12      3@     65
edf13      4@     50
dde8       3@     70
dde7       3@     70

我想grep如下:first-grep "3@" 1.txt | awk '{print $1}',然后是grep * 2.txt,其中star(*)代表第一个grep的输出。

所有这些都应该在提示符的一行中完成。

预期产量:

abc12      3@     65
dde8       3@     70

谢谢

bash shell
3个回答
4
投票

使用一个awk流程:

awk 'FNR==NR{if ($2 ~ "3@") a[$1]++; next} a[$1]' 1.txt 2.txt

第一个condition{action}表示从第一个文件读取时,使用第一个字段作为哈希增加数组元素。当此元素为一个或多个时,第二个条件a[$1]为true,这将检查第二个文件,默认操作是打印该行。


0
投票

join和grep的另一种方式

join -t $'\t' -o 2.1 2.2 2.3 1.txt 2.txt | grep 3@

0
投票

我认为其他答案更好,如果你坚持使用grep

grep "3@" 1.txt| awk '{print $1}' | while read i;do grep $i 2.txt;done
© www.soinside.com 2019 - 2024. All rights reserved.