2012-05-10 68 views
3

我正在使用操作系統字典文件進行掃描。我創建了一個Java程序,允許用戶輸入任何字母組合來查找包含這些字母的單詞。我將如何使用grep命令執行此操作?GREP如何搜索包含特定字母的單詞(一次或多次)?

+0

你想找到包含這些字母的*任何*,這些字母的所有*,或*只有*這些字母的單詞嗎? –

+0

@GregHewgill我想找到所有的一個選項,只有那些字母的另一個選項 – stackoverflow

+2

您可能會發現以下有用的:[如何在終端中使用Grep命令作弊與朋友的拼字遊戲和單詞](http:// www .edibleapple.com/2011/04/13 /如何使用的最grep的命令功能於終端至金手指-AT-拼字遊戲和字與 - 朋友/) –

回答

3

查找包含只有給定的字母組成單詞:

grep -v '[^aeiou]' wordlist 

以上濾掉線wordlist包含除了那些列出的任何字符。這是使用雙重否定來得到你想要的。另一種方法是:

grep '^[aeiou]+$' wordlist 

它搜索整行中一個或多個選定字母的序列。

查找包含所有給定的字母話更是一個有點冗長,因爲可能有其他字母的那些之間,我們希望:

cat wordlist | grep a | grep e | grep i | grep o | grep u 

(是的,有是一個無用的使用上述cat,但對稱性是這種方式更好。)

0

您可以使用一個grep解決格雷格的回答的最後一個問題,只要您的grep支持PCRE。 (基於this excellent answer,歸結一點)

grep -P "(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u)" wordlist 

正前瞻意味着它將與「一」的任何地方匹配任何和「E」的任何地方,並且....等等等等

相關問題