2016-08-24 123 views
0

所有匹配的模式在TXT1查找使用grep

S01A1P2 
S01A1P5 
S01A1P4 

在TXT2

data/train/wave/S01A1P3.mfc 
data/train/wave/S01A1P7.mfc 
data/train/wave/S01A1P8.mfc 
data/train/wave/S01A1P1.mfc 
data/train/wave/S01A1P5.mfc 
data/train/wave/S01A1P6.mfc 
data/train/wave/S01A1P2.mfc 
data/train/wave/S01A1P4.mfc 

使用grep -f txt1 txt2並導致

data/train/wave/S01A1P4.mfc 

但我想這個結果發現所有模式

data/train/wave/S01A1P5.mfc 
data/train/wave/S01A1P2.mfc 
data/train/wave/S01A1P4.mfc 

我該怎麼辦?

+0

將'file txt1 txt2'的輸出添加到您的問題中。 – Cyrus

+2

'grep -f txt1 txt2'適用於我,匹配3行。 – xxfelixxx

+0

[txt1](https://dl.dropboxusercontent.com/u/100069389/Note/Grep/txt1)[txt2](https://dl.dropboxusercontent.com/u/100069389/Note/Grep/txt2) –

回答

3

txt1中包含CRLF行終止。試試這個:

grep -f <(dos2unix <txt1) txt2 
+0

它的工作原理,但它需要dos2unix,謝謝 –

+1

或使用'grep -f <(tr -d '\ r' Cyrus

0
grep -f txt1 txt2 

對我也適用。

但你也可以嘗試做醜陋way-

for i in `cat txt1` 
do 
grep "$i" txt2 
done 
+0

醜陋的方式對我也不起作用:(我的問題在哪裏? –