ブロックの場合、シェルスクリプトでgrepとwcを使用する

ブロックの場合、シェルスクリプトでgrepとwcを使用する

ファイル内の文字列の発生回数を計算し、それに基づいていくつかのアクションをとるシェルスクリプトを作成しようとしています。

これは私のスクリプトです。

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

それ以外にもgrep発生回数も計算したいのですが、wc -lこれをどのifようにドアに入れることができますか?

ご協力ありがとうございます!

答え1

コマンド置換$()-eq:算術比較の使用:

if [ $(grep 'something' file | wc -l) -eq 5 ]
    then
       echo equal
    else
       echo not equal
fi

答え2

-c引数を使用してgrepし、wc完全にスキップします。あるいは、-eqなどを避けるために算術コンテキストを使用することもできます。

#!/bin/bash

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

exit

関連情報