从文件中排除特定关键字

从文件中排除特定关键字

我正在尝试编写一个 shell 脚本,它将 grep 查找应该从文件中排除的关键字,如果它从排除的关键字中找到其他内容,它应该执行特定的命令。

logcheck=`grep -vq 'accepting\|idle.' /tmp/lpstat-Final.log`

    if [[ $logcheck == 'accepting\|idle.' ]] ; then
        status=0
        statustxt=OK
    else
    echo "Something found"
    fi

除了“接受\|空闲”之外,结果应该是“如果有的话”。发现它应该转到 else 语句,否则存在状态将为 0

答案1

if ! grep -Evq 'accepting|idle' /tmp/lpstat-Final.log; then
    status=0
    statustxt=OK
else
    echo 'Something found'
fi

这里最重要的是,grep如果您使用 则不会产生任何输出-q。这意味着使用命令替换将不会捕获任何内容($logcheck在您的代码中将为空)。相反,我们使用实用程序的退出状态来确定是否找到了某些内容。

-E在这里使用是为了使正则表达式更漂亮;它也需要用于替换(\|基本正则表达式中的替换是一个扩展,由例如 GNU 支持grep)。

相关内容