初心者のWEBデザイン

HTML,CSS、その他WEBデザインに関する事を記述していきます。

Shell Script 正規表現でマッチした文字列を変数に代入する

$BASH_REMATCH変数の使用方法について記述します。

#!/bin/bash

url="https://www.google.com"

if [[ $url =~ ^(http|https)://(.+)\.(.+) ]]; then
  echo "${BASH_REMATCH[0]}" 
  echo "${BASH_REMATCH[1]}" 
  echo "${BASH_REMATCH[2]}" 
  echo "${BASH_REMATCH[3]}" 
fi

出力結果

https://www.google.com  #BASH_REMATCH[0]
https                   #BASH_REMATCH[1]
www.google              #BASH_REMATCH[2]
com                     #BASH_REMATCH[3]

要点

  • testコマンドで正規表現を使用するには[[ 比較文字列 =~ 正規表現 ]]
  • 正規表現を指標する部分は()で囲う
  • マッチした部分は全て$BASH_REMATCH配列に格納される
  • 添字0はマッチした文字列全て、以降は括弧毎にインクリメントしていく