Excluindo a palavra-chave específica de um arquivo

0

Eu estou tentando escrever um script de shell que irá buscar por palavras-chave que devem ser excluídas de um arquivo, se ele encontrar alguma outra coisa excluída, deve executar o comando específico.

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

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

O resultado deve ser Se nada além de 'aceitar \ | ocioso.' achei que deveria ir para outra afirmação ou então o status existirá será 0

    
por biz 13.05.2018 / 08:36

1 resposta

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

O principal aqui é que grep não produzirá nenhuma saída se você usar -q . Isso significa que usar uma substituição de comando não capturará nada ( $logcheck em seu código estará vazio). Em vez disso, usamos o status de saída do utilitário para determinar se algo foi encontrado ou não.

Estou usando -E aqui para tornar a expressão regular mais bonita; também é necessário para alternação (alteração com \| em uma expressão regular básica é uma extensão, suportada por, por exemplo, GNU grep ).

    
por 13.05.2018 / 08:49