目次:
Bashで文字列を操作する際の最も一般的な操作の1つは、文字列に別の文字列が含まれているかどうかを判断することです。
、文字列に部分文字列が含まれているかどうかを確認するいくつかの方法を示します。
ワイルドカードを使用する
最も簡単な方法は、部分文字列をアスタリスクのワイルドカード記号(アスタリスク)
*
囲み、それを文字列と比較することです。 ワイルドカードは、ゼロ、1つまたは複数の文字を表すために使用される記号です。
テストが
true
返す
true
、部分文字列は文字列に含まれています。
以下の例では、ifステートメントと等値演算子(
==
)を使用して、サブストリング
SUB
がストリング
STR
内にあるかどうかを確認しています。
#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi
実行されると、スクリプトは次を出力します。
ケース演算子を使用する
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]; then echo "It's there." fi
スクリプトは次をエコーします。
Grepを使用する
grepコマンドを使用して、別の文字列内の文字列を検索することもできます。
次の例では、文字列
$STR
をgrepへの入力として渡し、文字列
$SUB
が入力文字列内で見つかったかどうかを確認しています。 コマンドは、必要に応じて
true
または
false
を返し
true
。
#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi
-q
オプションは、出力を省略するためにgrepにquietを指示します。
結論
文字列に部分文字列が含まれているかどうかを確認することは、Bashスクリプトで最も基本的で頻繁に使用される操作の1つです。
このチュートリアルを読んだ後、文字列に別の文字列が含まれているかどうかをテストする方法を十分に理解する必要があります。 テスト用に
awk
や
sed
などの他のコマンドを使用することもできます。