
Bashで文字列を操作するときの最も一般的な操作の1つは、文字列に別の文字列が含まれているかどうかを判断することです。
この記事では、文字列に部分文字列が含まれているかどうかを確認するいくつかの方法を紹介します。
ワイルドカードの使用#
最も簡単な方法は、部分文字列をアスタリスクのワイルドカード記号(アスタリスク)で囲むことです*
文字列と比較します。ワイルドカードは、0、1つ以上の文字を表すために使用される記号です。
テストがtrue
を返した場合 、サブストリングはストリングに含まれています。
以下の例では、ifステートメントと等式演算子(==
)を使用しています。 )サブストリングSUB
かどうかを確認します 文字列STR
内にあります :
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" == *"$SUB"* ]]; then
echo "It's there."
fi
実行すると、スクリプトは次のように出力します。
It's there.
ケース演算子の使用#
ifステートメントを使用する代わりに、caseステートメントを使用して、文字列に別の文字列が含まれているかどうかを確認することもできます。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
case $STR in
*"$SUB"*)
echo -n "It's there."
;;
esac
正規表現演算子の使用#
指定された部分文字列が文字列内にあるかどうかを判断する別のオプションは、正規表現演算子=~
を使用することです。 。この演算子を使用すると、正しい文字列が正規表現と見なされます。
アスタリスクが続くピリオド.*
改行文字を除くすべての文字の0回以上の出現に一致します。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if [[ "$STR" =~ .*"$SUB".* ]]; then
echo "It's there."
fi
スクリプトは次のようにエコーします:
It's there.
Grepの使用#
grepコマンドを使用して、別の文字列内の文字列を検索することもできます。
次の例では、文字列$STR
を渡します。 grepへの入力として、文字列$SUB
かどうかを確認します 入力文字列内にあります。コマンドはtrue
を返します またはfalse
必要に応じて。
#!/bin/bash
STR='GNU/Linux is an operating system'
SUB='Linux'
if grep -q "$SUB" <<< "$STR"; then
echo "It's there"
fi
-q
オプションは、出力を省略するために、grepに静かにするように指示します。
結論#
文字列に部分文字列が含まれているかどうかを確認することは、Bashスクリプトで最も基本的で頻繁に使用される操作の1つです。
このチュートリアルを読んだ後は、文字列に別の文字列が含まれているかどうかをテストする方法をよく理解している必要があります。 awk
などの他のコマンドを使用することもできます またはsed
テスト用。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。