Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 检查文本文件是否包含全部10个单词的正则表达式是什么?_Regex_Bash_Grep - Fatal编程技术网

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 to
grep
命令强制模式仅匹配整个单词。
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