是否可以将这两个grep查询折叠成一行命令?

是否可以将这两个grep查询折叠成一行命令?,grep,Grep,我想下载网页的源代码,然后检查是否有一个字符串,是否有另一个字符串。我有下面的工作代码-是否可以将整个脚本作为一行命令来执行 PAGE_SOURCE=`curl https://example.com` if ! echo "$PAGE_SOURCE" | grep -q "string that is bad"; then if echo "$PAGE_SOURCE" | grep -q "string that

我想下载网页的源代码,然后检查是否有一个字符串,是否有另一个字符串。我有下面的工作代码-是否可以将整个脚本作为一行命令来执行

PAGE_SOURCE=`curl https://example.com`

if ! echo "$PAGE_SOURCE" | grep -q "string that is bad"; then
    if echo "$PAGE_SOURCE" | grep -q "string that is good"; then
        exit 0
    fi
fi

exit 1
你可以用

if grep -Pq '^(?!.*string that is bad).*string that is good'; then
    exit 0
fi
thread中描述的众所周知的PCRE模式应该放在一个带引号的字符串中,否则需要转义
字符,因为它用于扩展历史记录

简短的模式描述:

  • ^
    -字符串的开头
  • (?!.*坏字符串)
    -如果存在尽可能多的0+字符而不是换行符,则会导致匹配失败,然后在当前位置右侧立即出现坏字符串
  • *好的字符串
    -尽可能多的0+字符(换行字符除外),然后
    好的字符串

如果echo“$PAGE_SOURCE”| grep-Pq”^(?。*字符串不好)。*字符串好”;那么
对您有效吗?不,我收到错误消息“在(?或(?--)之后无法识别字符,对不起,
grep-Pq'^(?。。。*字符串不好)。*好的字符串
应该有效,使用单引号。
在双引号字符串中展开。看起来很有效,谢谢