Bash で文字列が部分文字列を含むかどうかを調べる

Muhammad Husnain 2023年1月30日
  1. case 条件文を使用する(方法 1)
  2. if ステートメントでワイルドカードを使用する(方法 2)
  3. Bash の grep コマンドを使用する(方法 3)
  4. 正規表現演算子を使用する(~=)(方法 4)
Bash で文字列が部分文字列を含むかどうかを調べる

文字列からサブ文字列を検索することは、文字列で最も頻繁に使用される操作です。このタスクを実行する方法はたくさんあります。

この記事では、特定の文字列に特定の部分文字列が含まれているかどうかを確認するための複数の Bash スクリプトベースの実装について説明します。

case 条件文を使用する(方法 1)

case は bash の条件付きステートメントであり、スクリプトに条件付きブロックを実装するために使用できます。このステートメントは、bash でサブストリングを見つけるために使用できます。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='bash'

case $str in

  *"$substr"*)
    echo  "str contains the substr"
    ;;
esac

strsubstr の 2つの文字列があります。case ステートメントを適用して、strsubstr が含まれているかどうかを確認しました。

出力:

ユースケース条件ステートメント

if ステートメントでワイルドカードを使用する(方法 2)

if ステートメントでワイルドカードを使用して、文字列から部分文字列を見つけることもできます。サブストリングを見つける最も簡単な方法は、サブストリングの前後にワイルドカード記号のアスタリスク(*)を付けて、実際のストリングと比較することです。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='tutorial'
if [[ "$str" == *"$substr"* ]]; then
  echo "String contains the sunstring"
else
  echo "String does'nt contains the substring"
fi

出力:

if ステートメントでワイルドカードを使用する

Bash の grep コマンドを使用する(方法 3)

grep コマンドは、ファイルまたは文字列から何かを検索するためにも使用されます。オプション -q があり、grep コマンドに出力を表示しないように指示します。true または false を返します。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='tutorial'
if grep -q "$substr" <<< "$str"; then
  echo "String contains the substring"
fi

出力:

Bash の grep コマンドを使用する

正規表現演算子を使用する(~=)(方法 4)

正規表現演算子(~=)と呼ばれる別の演算子があり、これを使用して 2つの文字列を比較し、文字列に部分文字列が含まれているかどうかを確認できます。

脚本:

#!/bin/bash

str='This is a bash tutorial'
substr='bash'
if [[ "$str" =~ .*"$substr".* ]]; then
  echo "String contains the substring"
fi

条件ステートメントでは、regex 演算子によって右側の文字列が正規表現になり、記号 .*は文字列内の 0 個以上の部分文字列の出現を比較することを意味することに注意してください。

出力:

正規表現演算子を使用する

したがって、文字列から部分文字列を見つけるいくつかの方法を見ることができます。

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn