我正在使用操作系统的字典文件进行扫描。我正在创建一个Java程序,允许用户输入任意组合的字母以查找包含这些字母的单词。如何使用grep命令来实现?
我正在使用操作系统的字典文件进行扫描。我正在创建一个Java程序,允许用户输入任意组合的字母以查找包含这些字母的单词。如何使用grep命令来实现?
查找仅包含给定字母的单词:
grep -v '[^aeiou]' wordlist
以上过滤掉了wordlist
中除了列出的字符之外不包含任何其他字符的行。这有点像使用双重否定来获得你想要的结果。另一种方法是:
grep '^[aeiou]+$' wordlist
这个搜索会针对整行文本寻找一个或多个指定字母的连续序列。
要查找包含所有给定字母的单词则稍微麻烦些,因为我们想要的字母之间可能还有其他字母:
cat wordlist | grep a | grep e | grep i | grep o | grep u
(是的,上面有一个无效的cat
使用,但这样对称性更好。)
你可以使用单个grep
来解决Greg答案中的最后一个问题,前提是你的grep
支持PCRE。(基于这个优秀的答案,简化了一下)
grep -P "(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u)" wordlist