2017-09-06 104 views
0

我有兩個文件file1file2和一個模式pattern對第一個grep返回的每個字符串運行第二個grep

使用上pattern的grep在file1cut,我產生一些字符串像以下:

String1 
String2 
String3 
String4 
String5 

對於這些字符串,我到grep文件2。我怎樣才能做到這一點?

現在,我正在手動執行此操作,但必須存在更好的方法。我可以使用for循環做這個,但是我想知道是否只是將第一個grepcut的結果輸送到第二個grep可以工作。

注意: 請讓我知道是否需要任何其他信息。

+0

請提供'file1','file2'和'pattern'的工作示例以及預期輸出。 –

回答

3

您可以使用process substitution-f選項:

grep -Ff <(grep -o 'pattern' file1) file2 
+1

簡短而甜美。尼斯。 – User9102d82

+0

啊,OP是用bash?這個問題沒有提到這一點。你怎麼知道?! – ghoti

+0

@ghoti:對於許多人來說'shell'被認爲與'bash'相同 – anubhava

3

grep-f選項,這使得需要一個文件的參數,並使用該文件作爲模式中的每一行。因此,您可以使用兩個步驟:

$ grep pattern file1 > tmp-file 
$ grep -f tmp-file file2 > output 

第一步,從第一個文件中提取行並將它們存儲在tmp文件中。第二步然後使用這組模式從第二個文件中提取匹配行。

你可以結合這些東西,並達到由@anubhava指出的解決方案。

相關問題