
ファイル内の文字列の発生回数を計算し、それに基づいていくつかのアクションをとるシェルスクリプトを作成しようとしています。
これは私のスクリプトです。
#!/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