假设我有两个包含属性名称和属性的文件,其中不同的数据存储在两个文件中:
1.txt:
abc12 3@ 50
edf13 4@ 50
dde8 3@ 502.txt
abc12 3@ 65
edf13 4@ 50
dde8 3@ 70
dde7 3@ 70我希望grep如下所示:首先- grep "3@" 1.txt | awk '{print $1}',然后是grep * 2.txt,其中star(*)表示第一个grep的输出。
所有这些都应该从提示符中用一行来完成。
预期输出:
abc12 3@ 65
dde8 3@ 70谢谢
发布于 2017-12-17 11:00:11
使用一个awk进程:
awk 'FNR==NR{if ($2 ~ "3@") a[$1]++; next} a[$1]' 1.txt 2.txt第一个condition{action}意味着当读取第一个文件时,使用第一个字段作为散列增加数组元素。当该元素为一个或多个元素时,第二个条件a[$1]为真,将检查第二个文件,默认操作是打印行。
发布于 2017-12-17 21:36:44
我认为其他的答案更好,这是如果你坚持grep
grep "3@" 1.txt| awk '{print $1}' | while read i;do grep $i 2.txt;done发布于 2017-12-17 12:50:02
连接和grep的另一种方式
join -t $'\t' -o 2.1 2.2 2.3 1.txt 2.txt | grep 3@https://stackoverflow.com/questions/47854252
复制相似问题