假设我有两个包含属性名称和属性的文件,其中不同的数据存储在两个文件中:
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
谢谢
使用一个awk
流程:
awk 'FNR==NR{if ($2 ~ "3@") a[$1]++; next} a[$1]' 1.txt 2.txt
第一个condition{action}
表示从第一个文件读取时,使用第一个字段作为哈希增加数组元素。当此元素为一个或多个时,第二个条件a[$1]
为true,这将检查第二个文件,默认操作是打印该行。
join和grep的另一种方式
join -t $'\t' -o 2.1 2.2 2.3 1.txt 2.txt | grep 3@
我认为其他答案更好,如果你坚持使用grep
:
grep "3@" 1.txt| awk '{print $1}' | while read i;do grep $i 2.txt;done