2014-10-20 62 views
0

我有一個2列製表符分隔的文件,我需要grep的特定信息。 該文件是這樣的:確切的價值,但打印整行

wych_hazel agt|plt 
wytensin agt 
x agt|com|qud 
xanax agt 
xtc agt 
xylocaine agt 
yellow_jacket agt|anm 

我需要從第2列到grep,只有具有價值agt這些行。

所需的輸出會是這樣:

wytensin agt 
xanax agt 
xtc agt 
xylocaine agt 

我曾嘗試:

grep -e 'agt' input 

這給了我:

wych_hazel agt|plt 
wytensin agt 
x agt|com|qud 
xanax agt 
xtc agt 
xylocaine agt 
yellow_jacket agt|anm 

然後我曾嘗試:

grep -oh 'agt' input 

這給了我:

agt 
agt 
agt 
agt 
agt 
agt 
agt 

我應該出臺什麼grep參數,以我想要的結果到達?

+1

'grep agt $ input' should do it。 – 2014-10-20 11:09:05

+0

@PaulR您應該將您的評論作爲答案。 – owwoow14 2014-10-20 11:11:22

+0

沒問題 - 完成。 – 2014-10-20 11:18:27

回答

1

如果agt始終處於行的末尾時,它的Ø然後你可以這樣做:

grep agt$ input 
+1

請注意,您可能希望在單詞本身的前面添加一些條件,以防止匹配行,如「hello xxxxagt」。在我的回答中,我添加了'\ s',這樣空格或製表符就可以在之前出現。 – fedorqui 2014-10-20 11:26:50

+2

@fedorqui:是的,的確如此 - 這將更加強大 - 我只是基於OP提供的樣本數據尋求「極簡主義」解決方案。 – 2014-10-20 11:29:04

1

使用字邊界以及-E參數。

grep -E '^[^ ]+\s+.*\sagt$' file 
2

這是awk工作:只要告訴它來尋找那些線,其中第二場是完全agt

$ awk '$2=="agt"' file 
wytensin agt 
xanax agt 
xtc agt 
xylocaine agt 

grep,您還可以檢查一個空間的存在再行結束周圍agt

+1

感謝提示@fedorqui我沒有想到使用awk來解決這個問題,但它也是一個很好的解決方案。 – owwoow14 2014-10-20 11:26:20