Bashの正規表現 - =~、grep、sed、awkでのパターンマッチング
=~演算子、grepパターン、sed置換、awkマッチングによるbashでの正規表現の使い方。キャプチャグループと一般的な正規表現パターンを含みます。
String Manipulation
詳細な説明
Bashでの正規表現
Bashは[[ ]]テストの=~演算子と、grep、sed、awkなどの外部コマンドを通じて正規表現をサポートします。
=~演算子
if [[ "hello123" =~ [0-9]+ ]]; then
echo "数字を含みます"
fi
# キャプチャグループ
VERSION="v3.14.2"
if [[ "$VERSION" =~ ^v([0-9]+)\.([0-9]+)\.([0-9]+)$ ]]; then
echo "Major: ${BASH_REMATCH[1]}"
echo "Minor: ${BASH_REMATCH[2]}"
echo "Patch: ${BASH_REMATCH[3]}"
fi
一般的なバリデーションパターン
# メールバリデーション
[[ "$email" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]
# IPv4アドレス
[[ "$ip" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]
# セマンティックバージョン
[[ "$ver" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]
grepでの正規表現
grep -E "error|warning|fatal" app.log
grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" access.log
sedでの正規表現
echo "John Smith" | sed -E 's/^(\w+) (\w+)$/\2, \1/'
sed 's/<[^>]*>//g' page.html
ユースケース
bashでの正規表現は入力バリデーション(メール、IPアドレス、日付)、ログファイルの解析(タイムスタンプ、IP、エラーコードの抽出)、データ変換(フィールドの再フォーマット、値の抽出)、設定管理(複数ファイルにわたるパターンの検索と置換)に使用されます。