2014-08-30 517 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