2014-08-30 521 views
1

一个相当简单的问题。我有两个制表符分隔的文件。第一个是由我的许多列和第一,第二列是格式如下图所示:awk提取关键字行

RT034_00001 xxxx 
RT034_00002 sss 
RT034_00003 rrrr 
RT034_00004 yrurf 

我想找回线,其中第一列的值匹配第二个一列文件的以下关键字,例如:

RT034_00002 
RT034_00004 

所以在最后我想配

RT034_00002 sss 
RT034_00004 yrurf 

任何方式做到这一点?

回答

2

您可以通过在第一组建一个数组的键是第二个文件的内容,然后打印匹配的行做到这一点:

awk 'NR==FNR {a[$1]; next} $1 in a' second_file first_file 
+1

''++是不是真的在这里需要的,因为我们从来没有真正看计数。虽然我承认,但我也可能会这样做。 ';)' – 2014-08-30 19:14:18

+1

我忘记了只需简单地引用密钥就足够了。我编辑了它。 – 2014-08-30 19:18:58

+1

我运行awk'NR == FNR {a [NR] = $ 1;下一个}在'2.txt 1.txt> 3.txt中$ 1。给出一个空文件。我做错了什么? – user61677 2014-08-30 19:29:37

0

grep -f 2ndfile.txt 1stfile.txt

会工作,如果

1stfile .txt是

RT034_00001 xxxx 
RT034_00002 sss 
RT034_00003 rrrr 
RT034_00004 yrurf 

and 2ndfile.txt is

RT034_00002 
RT034_00004 

enter image description here

+0

我检查过。但它再次给出了第一个文件的内容 – user61677 2014-08-30 19:22:23

+0

你确定,因为它在我的shell中工作 – Anoop 2014-08-30 19:37:58

+0

是的,它给出了fhrt分隔文件的内容 – user61677 2014-08-30 19:40:52