Bash:
正規表現の使用
どのようにして:
基本的なパターンマッチング
文字列がパターンに一致するかどうかを見つけるには、正規表現に一致する行を探すためのコマンドラインユーティリティであるgrep
を使用できます:
echo "Hello, World!" | grep -o "World"
# 出力: World
特定のデータの抽出
regexパターンに一致するデータの部分を抽出するには、grep
で-o
を使用できます:
echo "Error: File not found" | grep -oE "[A-Za-z]+:"
# 出力: Error:
sed
でのRegexの使用
sed
(ストリームエディター)はテキストの解析と変換に強力なユーティリティです。ここではsed
をregexと共に使用してテキストを置き換える方法です:
echo "Bash is great" | sed -e 's/great/awesome/'
# 出力: Bash is awesome
条件文でのパターンマッチング
Bashは条件文で直接regexをサポートしています:
[[ "https://example.com" =~ ^https?:// ]] && echo "URL is valid" || echo "URL is invalid"
# 出力: URL is valid
awk
での高度なパターンマッチングと操作
awk
はCSVなどの構造化されたテキストデータを扱う際に便利な、より複雑なデータ抽出と操作をサポートする別のテキスト処理ツールです:
echo -e "ID,Name,Age\n1,John,22\n2,Jane,24" | awk -F, '$3 > 22 {print $2 "は22歳よりも年上です。"}'
# 出力: Janeは22歳よりも年上です。
Bashの組み込みregex機能は多くのユースケースをカバーしていますが、非常に高度なregex操作については、perl
やpython
スクリプトとBashスクリプトを組み合わせることを検討するかもしれません。これらの言語は強力なregexライブラリ(例:Pythonのre
)を提供しています。Pythonでの簡単な例:
echo "Capture this 123" | python3 -c "import sys; import re; print(re.search('(\d+)', sys.stdin.read()).group(0))"
# 出力: 123
必要に応じてこれらのプログラミング言語を取り入れることで、Bashスクリプトでのregexの全能力を活用することができます。