grep多个字符串的shell命令是什么?

时间:2015-02-01 15:27:16

标签: shell

grep多个字符串的shell命令是什么? 对于输入文本[命令的输出],我需要检查是否存在少量字符串。如果所有字符串都存在则返回true,否则返回false(AND操作)。

示例1:输入:grep多个字符串的shell命令是什么?对于输入文本[命令的输出],我需要检查是否存在少量字符串。如果所有字符串都存在则返回true,否则返回false(AND操作)。

搜索字符串"需要" "检查" "几个" "和"

输出:True

Exapmle 2:grep多个字符串的shell命令是什么?对于输入文本[命令的输出],我需要检查是否存在少量字符串。如果所有字符串都存在则返回true,否则返回false

搜索字符串"需要" "检查" "几个" "和"

输出:错误

2 个答案:

答案 0 :(得分:0)

您可以使用类似

的内容
$cat test.txt
name1 is a boy
name2 is a girl
name3 is a good person
name4 is unknown to me
$ grep -q "name1" test.txt && grep -q "name2" test.txt
$ echo $?
0
$ grep -q "name1" test.txt && grep -q "helloWorld" test.txt
$ echo $?
1

使用grep,您正在搜索每个模式。如果其中任何一个未能在文件中找到该模式,它将以1状态退出。所以在我的第二个例子中,第一个grep成功并返回0而第二个返回1,因此当你查询退出状态时它会说1.用这个,你可以检查你是否找到了文件中的所有模式。

答案 1 :(得分:0)

如果您的意思是“所有搜索目标都在文件中某处”,那么您可以

   awk '/need/{n=1}/check/{c=1}/few/{f=1}/AND/{A=1}
       END{exit (!(n&&c&&f&&A))}' file2search
回声$?当在文件中找到所有内容时将返回0,当任何或所有内容都缺少时将返回1。

如果您的意思是“所有搜索目标都位于同一行”,那么您可以

  awk '{ if ($0 ~ /need/ && $0 ~ /check/ && $0 ~ /few/ && $0 ~ /AND/) lineMatched=1 }
      END { if (lineMatched) exit 0 ; else exit 1 }' file2Search
回声$?将以同样的方式为此工作。

IHTH