Regex 检查文本文件是否包含全部10个单词的正则表达式是什么?
例如,有一个文件Regex 检查文本文件是否包含全部10个单词的正则表达式是什么?,regex,bash,grep,Regex,Bash,Grep,例如,有一个文件input.txt 我想检查input.txt是否包含以下十个单词: 猫,狗,鱼,鸡,鸭,牛,马,…,羊 注意,我不关心它们在文本文件中出现的顺序 为了兼容性,请尽可能使用基本运算符。使用: 更多I/O版本使用: 此解决方案要求grep支持-o选项 grep -Fwo -f patternfile.txt inputfile.txt | sort | uniq F标记以匹配固定字符串,因为关键字是固定字符串。 wflag togrep命令强制模式仅匹配整个单词。 o标记,仅打印
input.txt
我想检查input.txt
是否包含以下十个单词:
猫
,狗
,鱼
,鸡
,鸭
,牛
,马
,…,羊
注意,我不关心它们在文本文件中出现的顺序
为了兼容性,请尽可能使用基本运算符。使用:
更多I/O版本使用:
此解决方案要求
grep
支持-o
选项
grep -Fwo -f patternfile.txt inputfile.txt | sort | uniq
F
标记以匹配固定字符串,因为关键字是固定字符串。w
flag togrep
命令强制模式仅匹配整个单词。o
标记,仅打印匹配项,每行打印一条。这是使用sort
和uniq
的技巧工作所必需的
在这个命令链之后,如果一个单词有匹配项,那么它将在输出中恰好出现一次。这并不是完整的解决方案,但我认为这足以暗示我们继续前进
patternfile.txt
包含要搜索的单词,以新行分隔。就你而言:
cat
dog
fish
chick
duck
cow
horse
sheep
你试过什么吗?你需要使用
Regex
?似乎InStr()
可能更容易。。。另外,您需要用什么语言编写这个程序?它们必须按任何特定的顺序吗?以编程方式解析文件并检查该条件不是更容易吗?我认为用正则表达式不可能做到这一点。你难道不需要列举所有可能出现这些词的顺序吗?@WaleedKhan:如果有前瞻性的话,就没有必要了。然而,我不认为它会比浏览文件n次并检查列表中的n个单词更快。
grep -Fwo -f patternfile.txt inputfile.txt | sort | uniq
cat
dog
fish
chick
duck
cow
horse
sheep