Bashの文字列操作 - 部分文字列、置換、トリム、大文字小文字変換

bashパラメータ展開による部分文字列抽出、パターン置換、接頭辞/接尾辞の除去、デフォルト値、大文字小文字変換の文字列操作を学びます。

String Manipulation

詳細な説明

Bashでの文字列操作

Bashはパラメータ展開を通じて強力な文字列操作を提供します。これらの操作は外部プロセスを起動せずに実行されるため、単純な変換ではsedやawkより高速です。

文字列の長さ

str="Hello, World!"
echo ${#str}    # 13

部分文字列の抽出

str="Hello, World!"
echo ${str:7}      # World!(オフセットから末尾まで)
echo ${str:0:5}    # Hello(オフセットと長さ)

パターン置換

path="/home/user/documents/report.pdf"
echo ${path/user/admin}       # 最初の一致を置換
echo ${path//\//|}            # すべての一致を置換

接頭辞と接尾辞の除去

file="archive.tar.gz"
echo ${file##*.}      # gz(拡張子のみ)
echo ${file%.*}       # archive.tar
echo ${file%%.*}      # archive(ベース名)

デフォルト値

echo ${PORT:-3000}                    # 未設定または空なら既定値を使用
: ${PORT:=3000}                       # 未設定または空なら既定値を代入
echo ${DB_HOST:?"DB_HOSTは必須です"}  # 未設定ならエラー

大文字小文字変換(Bash 4+)

text="Hello World"
echo ${text^^}    # HELLO WORLD(すべて大文字)
echo ${text,,}    # hello world(すべて小文字)

ユースケース

文字列操作はbashスクリプトでファイル名の処理(拡張子、ベース名、ディレクトリパスの抽出)、動的な文字列の構築(URL、ファイルパス、ログメッセージ)、デフォルト値による設定の実装、sedやawkなどの外部コマンドに頼らないデータ変換に不可欠です。

試してみる — Bash Cheat Sheet

フルツールを開く