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