Bash での文字列を小文字に変換する例を詳しく解説します
Bashでは、文字列を小文字に変換するためにいくつかの方法があります。最も一般的な方法は、tr
コマンドを使用することです。
tr
コマンドを使用する
tr
コマンドは、文字の変換を行うためのコマンドです。文字列を小文字に変換するには、tr
コマンドに[A-Z]
(大文字の範囲)と[a-z]
(小文字の範囲)を指定します。
string="This IS A STRING"
lowercase_string=$(tr '[A-Z]' '[a-z]' <<< "$string")
echo "$lowercase_string" # Output: this is a string
この例では、string
変数に大文字の文字列が格納されています。tr
コマンドを使用して、大文字を小文字に変換し、結果をlowercase_string
変数に格納しています。最後に、echo
コマンドを使用して、小文字に変換された文字列を表示しています。
他にも、sed
コマンドやBashの組み込み関数を使用する方法もありますが、tr
コマンドが最もシンプルで一般的な方法です。
<<<
は、コマンドライン引数として文字列を渡すための構文です。echo
コマンドは、文字列を表示するためのコマンドです。
Bash での文字列を小文字に変換する例を詳しく解説します
tr
コマンドを使った例
string="This IS A STRING"
lowercase_string=$(tr '[A-Z]' '[a-z]' <<< "$string")
echo "$lowercase_string" # 出力: this is a string
解説:
変数に文字列を代入:
tr
コマンドで変換:結果を表示:
tr
コマンドのポイント:
[A-Z]
や[a-z]
のような範囲指定を使うことで、複数の文字を一括で変換できます。
Bash のパラメータ展開を使った例 (Bash 4.0 以降)
string="This IS A STRING"
lowercase_string=${string,,}
echo "$lowercase_string" # 出力: this is a string
- パラメータ展開:
${string,,}
:string
変数の内容をすべて小文字に変換します。,,
は、パラメータ展開の特別な形式で、文字をすべて小文字に変換する働きがあります。
ポイント:
- Bash 4.0 以降で利用できる機能です。
tr
コマンドよりも簡潔に記述できます。
sed
コマンド:sed
コマンドでも文字列の置換を行うことができますが、tr
コマンドに比べて少し複雑です。- 正規表現: より高度な文字列の置換を行う場合は、正規表現を使うことができます。
Bash で文字列を小文字に変換する方法は、tr
コマンドやパラメータ展開など、いくつかの方法があります。状況に合わせて適切な方法を選択してください。
- 大文字への変換:
${string^^}
で大文字に変換できます。 - 特定の文字の置換:
tr
コマンドで、置換したい文字を指定することで、任意の文字に変換できます。
例:
# 大文字に変換
uppercase_string=${string^^}
echo "$uppercase_string" # 出力: THIS IS A STRING
# 'A' を 'X' に置換
replaced_string=$(tr 'A' 'X' <<< "$string")
echo "$replaced_string" # 出力: ThXs IS X STRING
sed コマンドを使う
sed
は、ストリームエディタと呼ばれるもので、文字列の検索・置換などが得意です。
string="This IS A STRING"
lowercase_string=$(sed 's/[A-Z]/\L&/g' <<< "$string")
echo "$lowercase_string" # 出力: this is a string
s/[A-Z]/\L&/g
:s
: 置換コマンド[A-Z]
: 大文字を検索\L&
: 見つかった文字を小文字に変換g
: 全てのマッチする箇所を置換
特徴:
tr
と同様に汎用的な置換が可能- より複雑な正規表現を使った置換もできる
Perl のワンライナー
Perl は強力なテキスト処理言語です。
string="This IS A STRING"
lowercase_string=$(perl -pe '$_ = lc;' <<< "$string")
echo "$lowercase_string" # 出力: this is a string
-pe
: 各行を読み込んで処理し、結果を出力$_ = lc;
: 現在の行($_)を小文字に変換
- Perl の豊富な機能を利用できる
- より複雑な文字列処理に適している
Python のワンライナー
Python も強力なスクリプト言語です。
string="This IS A STRING"
lowercase_string=$(python -c 'import sys; print(sys.stdin.read().lower())')
echo "$lowercase_string" # 出力: this is a string
-c
: コマンドラインからPythonコードを実行import sys; print(sys.stdin.read().lower())
: 標準入力から読み込んだ文字列を小文字に変換して出力
- Python の豊富なライブラリを利用できる
AWK
AWK は、テキストレコードをパターンマッチングおよび処理するためのプログラミング言語です。
string="This IS A STRING"
lowercase_string=$(awk '{print tolower($0)}' <<< "$string")
echo "$lowercase_string" # 出力: this is a string
{print tolower($0)}
: 各行を小文字に変換して出力
- CSVなどの構造化されたデータの処理に強い
どの方法を選ぶべきか?
- シンプルで高速:
tr
コマンド - 汎用的な置換:
sed
コマンド - 複雑な処理: Perl, Python, AWK
- Bash 組み込み機能: Bash 4.0 以降のパラメータ展開
選ぶ際のポイント:
- 処理速度:
tr
が最も高速 - 複雑さ: 処理が複雑になるほど、Perl, Python, AWK が有利
- 環境: インストールされているツール
- 可読性: 自分の理解しやすい言語
Bash で文字列を小文字に変換する方法は、tr
コマンド以外にも様々な方法があります。それぞれの方法に特徴があるので、状況に合わせて最適な方法を選択してください。
- 特定の文字の置換: 正規表現を使って、任意の文字を置換できます。
string bash shell