2010-04-06 67 views

回答

7
grep "string1\|string2\|string3" file_to_search_in 
+0

謝謝陳先生的快速回復。當然,這很有用 - 光滑! – topwoman 2010-04-06 11:54:47

+0

也許你也可以接受他的答案,如果它有效。 – Anders 2010-04-06 12:06:05

0

另外:

grep -e 'string1' -e 'string2' -e 'string3' 
+0

謝謝,蘭迪,工作就像一個魅力! 而與此同時,我又發現了一個: egrep'string1 | string2'infile – topwoman 2010-04-06 11:48:54

10

你也可以用awk

awk '/string1|string2|string3/' file 

使用awk,你也可以很容易地在需要時使用和邏輯。

awk '/string1/ && /string2/ && /string3/' file 
1

用Perl:

perl -lne 'print if /string1|string2|string3/;' file1 file2 *.fileext 

使用bash一個班輪:

while read line; do if [[ $line =~ string1|string2 ]]; then echo $line; fi; done < file 

使用bash腳本:

#!/bin/bash 

while read line 
do 
    if [[ $line =~ string1|string2|string3 ]]; then 
     echo $line 
    fi 
done < file 

注意,空間圍繞「[[$線=〜string1 | string2]]「都是相關的。即這些失敗中擊:

[[ $line=~string1|string2 ]] # will be alway true... 
[[$line =~ string1|string2]] # syntax error 
+0

可以從您的Bash one liner中省略花括號。 'do'和'done'是爲你做的。 – 2010-04-06 13:18:55

+0

do elim_curly_braces;完成了! – dawg 2010-04-06 23:44:04

2

另外一個選擇,特別是如果你要搜索的字符串的數量很大,是把這些字符串成新行和使用分隔文件:

grep -f file_of_strings file_to_search