(Translated by https://www.hiragana.jp/)
bashのif文で正規表現を使用する方法: 小粋空間
bashのifぶん正規せいき表現ひょうげん使用しようする方法ほうほう

bashのifぶん正規せいき表現ひょうげん使用しようする方法ほうほう

Posted at July 1,2019 11:55 PM
Tag:[bash]
  • Hatena ブックマーク
  • del.icio.us
  • livedoor
  • Google Bookmarks
  • Yahoo!ブックマーク
  • POOKMARK Airlines
  • ニフティクリップ
  • Buzzurl
  • newsing it!

bashのifぶん正規せいき表現ひょうげん使用しようする方法ほうほう紹介しょうかいします。

1.問題もんだいてん

#!/bin/bash
 
foo=abc123efg

変数へんすうfooのなかから"123"だけをしたいのですが、方法ほうほうかりません。

ということで、bashのifぶん正規せいき表現ひょうげん使用しようする方法ほうほう紹介しょうかいします。

2.ifぶん正規せいき表現ひょうげん使用しようする

ifぶん正規せいき表現ひょうげん使用しようするにはつぎのようにします。

#!/bin/bash
 
foo=abc123efg
 
if [[ ${foo} =~ ^[a-z]+([0-9]+).*$ ]]; then
  echo ${BASH_REMATCH[1]}
fi

実行じっこう結果けっか

123

ポイントは下記かきのとおりです。

  • ifぶんはブラケット(だいカッコ)をじゅうにする
  • 演算えんざんは"=~"
  • 正規せいき表現ひょうげんはクォーテーションでくくらない(正規せいき表現ひょうげん特別とくべつあつかいの文字もじがバックスラッシュでエスケープされるため)
  • 後方こうほう参照さんしょう(カッコでかこった部分ぶぶん)は ${BASH_REMATCH[1]} で取得しゅとく複数ふくすうある場合ばあい、[2][3]…で取得しゅとく

Perlけい表記ひょうき方法ほうほう("\d"や"\w"など)は使つかえないみたいなので、POSIX表記ひょうき利用りようします。

\w→[:alnum:]
\d→[:digit:]
\s→[:blank:]

詳細しょうさいは"info -f 'grep' -n 'Character Classes and Bracket Expressions"で確認かくにんできます。

ifぶんなかでPOSIX表記ひょうき使つか場合ばあい、さらに"[]"でくく必要ひつようがあります。

上記じょうきのサンプルを一部いちぶPOSIX表記ひょうきなおしたものが下記かきです。

#!/bin/bash
 
foo=abc123efg
 
if [[ ${foo} =~ ^[a-z]+([[:digit:]]+).*$ ]]; then
  echo ${BASH_REMATCH[1]}
fi

実行じっこう結果けっか

123

3.参考さんこうサイト

参考さんこうサイトは下記かきです。ありがとうございました。

関連かんれん記事きじ
トラックバックURL


コメントする
コメントするにはまずサインインしてください。
Loading...