値がABCまたはABDで始まるファイルがあります。
入力ファイルから値を取得した後、ABCまたはABDで始まることを確認する方法は?
例えば:
value=$(cat file | awk 'NF{print;exit}' | awk '{print $1}')
そして、この$ valueがABCまたはABDで始まることを確認したいと思います。どうやって?
case
を使用シェル変数がABCまたはABDで始まるかどうかを確認するには、従来の(そして非常に移植性の高い)方法はcaseステートメントを使用することです:
case "$value" in
AB[CD]*) echo yes;;
*) echo no;;
esac
これには外部プロセスが必要ないため、高速である必要があります。
[
を使用または、testコマンドを使用できます。
if [ "${value#AB[CD]}" != "$value" ]
then
echo yes
else
echo no
fi
これも非常にポータブルです。
[[
を使用最後に、より現代的で移植性の低いtestコマンドを使用できます。
if [[ $value == AB[CD]* ]]
then
echo yes
else
echo no
fi
ファイルの最初の空でない行を読み取り、その最初のフィールドがABCまたはABDで始まるかどうかをテストするには:
awk 'NF{if ($1~/^AB[CD]/) print "yes"; else print "no";exit}' file
これを試して:
echo $value | grep -c "^AB[CD]"
パターンが最初に存在する場合、これは1を返します。