3

我正在使用操作系统字典文件进行扫描。我正在创建一个 java 程序,以允许用户输入任何字母混合物来查找包含这些字母的单词。我将如何使用 grep 命令执行此操作?

4

2 回答 2

5

要查找包含给定字母的单词:

grep -v '[^aeiou]' wordlist

上面过滤掉了除了列出的wordlist那些之外包含任何字符的行。这是一种使用双重否定来获得你想要的东西。另一种方法是:

grep '^[aeiou]+$' wordlist

它在整行中搜索一个或多个选定字母的序列。

查找包含所有给定字母的单词有点冗长,因为在我们想要的字母之间可能还有其他字母:

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

(是的,上面有一个没用的用法cat,但是这样对称性更好。)

于 2012-05-10T01:12:45.623 回答
0

如果您支持 PCRE ,您可以使用单个grep来解决 Greg 答案中的最后一个问题。grep(基于这个出色的答案,归结为一点)

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

积极的前瞻意味着它将与任何地方的“a”和任何地方的“e”相匹配,等等。

于 2013-11-20T15:01:24.217 回答