GREP如何搜索包含特定字母(一次或多次)的单词?

时间:2012-05-10 01:03:47

标签: grep

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

2 个答案:

答案 0 :(得分:3)

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

grep -v '[^aeiou]' wordlist

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

grep '^[aeiou]+$' wordlist

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

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

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

(是的,上面有一个无用的cat,但这种对称方式更好。)

答案 1 :(得分:0)

如果grep支持PCRE,您可以使用单个grep来解决Greg答案中的最后一个问题。 (基于this excellent answer,稍微简化了一下)

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

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