Usando grep com wc no shell script se bloco

1

Estou tentando escrever um script de shell que conte o número de ocorrências de uma string em um arquivo e execute alguma ação com base nele.

Aqui está o meu script:

#!/bin/sh
if [ grep "\s*oplocks\s=" sample.txt | wc -l = 5 ]
then
    echo "cnt equals 5"
else
    echo "cnt not 5"
fi

Juntamente com grep , também quero contar o número de ocorrências, por isso estou usando wc -l . Como posso colocar isso em uma declaração if ?

Obrigado pela sua ajuda!

    
por SyncMaster 03.11.2017 / 20:23

2 respostas

1

Use a substituição de comandos $() e -eq : comparação aritmética:

if [ $(grep 'something' file | wc -l) -eq 5 ]
    then
       echo equal
    else
       echo not equal
fi
    
por 03.11.2017 / 20:31
0

Use o argumento -c para grep e ignore wc ao todo. Além disso, você pode usar um contexto aritmético para evitar -eq e afins.

#!/bin/bash

if (( $(grep -c 'pattern' sample.txt) == 5 )); then
    echo "5 occurances"
fi

exit
    
por 03.11.2017 / 23:11