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