2012-05-10 134 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”的任何地方,并且....等等等等

相关问题