2016-11-07 115 views
-1

我想將模式文件的內容與正則表達式(即grep -E -f)組合使用。grep combine -f和-E

輸入文件的格式爲

2 List_of_anthropologists<!!>Q1279970 
3 List_of_Governors_of_Alabama<!!>Q558677 
2027476 12th_Dalai_Lama<!!>Q25240 
etc.. 

和圖形文件的格式爲:

13th_Dalai_Lama 
5th_Dalai_Lama 
etc... 

我能讓他在模式「13th_Dali_Lama」手動把工作

grep -E "^(\d*)(?:\t)13th_Dalai_Lama" input_file 

但是,如何結合-f選項,以便13th_Dalai_Lama被替換爲pat中的行tern文件?

+0

請添加所需的輸出爲輸入您的問題樣本。 – Cyrus

+0

輸出應該是input_file中與正則表達式匹配的行,使模式文件中的行從模式文件「」插入「^(\ d *)(?:\ t)行」。例如:13th_Dalai_Lama應匹配:13th_Dalai_Lama Q558677但不是List_of_13th_Dalai_Lama Q558677 – Jay

+0

您的模式文件不包含輸入文件中的子字符串。 – Cyrus

回答

1

隨着GNU的grep,GNU SED和bash:

grep -f <(sed 's/.*/\\b&\\b/' pattern_file) input_file