Bash を使用して文字列内の文字を置換する
string
リテラルを含む一般的な操作の 1つは、その文字列内の個々の文字または部分文字列を他の文字または部分文字列に置き換えることです。
この記事では、BASH シェルを使用して文字列を置換するいくつかの方法を見ていきます。
方法 1 - tr
コマンドを使用する
tr
は、文字列に対してさまざまな変換を実行するために使用できる非常に便利な Bash コマンドです。 これは、文字列の変換 (文字列の大文字と小文字を大文字または小文字に変更するなど)、部分文字列の繰り返しの削除、および部分文字列の検索と置換に特に役立ちます。
文字列内の文字と部分文字列を置き換えるために使用されます。
構文:
echo "$variableName" | tr [character(s)ToBeRemoved] [character(s)ToBeAdded]
スクリプト例:
STR="ABCD"
echo "$STR" | tr A Z
出力:
ZBCD
文字列変数 $STR
の文字 "A"
は、文字 "Z"
に置き換えられます。 上記のコマンドは、文字 "A"
のすべてのインスタンスを置換する場合にも機能することに注意してください。
スクリプト例:
STR="ABACAD"
echo "$STR" | tr A Z
出力:
ZBZCZD
単一の文字を複数の文字に置き換えたり、部分文字列を他の部分文字列に置き換えたりするなどのより複雑な使用例では、tr
コマンドを引き続き使用できますが、正規表現 (RegEx
) を組み込んで使用する必要があります。 タスク。
tr
を使用したもう 1つの便利なコマンド オプションは、squeeze または -s
オプションで、一連の文字または部分文字列を単一の文字に置き換えることができます。
スクリプト例:
STR="ABBBCDDDDDE"
echo "$STR" | tr -s BD Z
出力:
AZCZE
見てわかるように、文字B
とD
の複数の隣接するオカレンスは、単一のZ
に置き換えられました。
方法 2 - Bash パラメータ展開を使用する
通常、変数に値を割り当てたり、その内容を出力したりするために、変数名の後に $
記号を付けます。 ただし、パラメーター拡張にも使用できます。
次のように、パラメーター展開を使用して、変数の内容を特定の部分文字列に置き換えることができます。
構文:
${varName/substring/replacement}
変数展開では中括弧の使用はオプションであることに注意してください。
スクリプト例:
STR="I LIKE FOOTBALL"
echo ${STR/FOOTBALL/CRICKET}
出力:
I LIKE CRICKET
パラメータ展開コマンドで変数名の後にスラッシュを 1つ使用すると、最初に出現した部分文字列のみが置換されることに注意してください。 次のスクリプトを使用して、文字列内の部分文字列または二重スラッシュをすべて置換します。
スクリプト例:
${varName//substring/replacement}
方法 3 - sed
コマンドを使用する
sed
コマンドは tr
コマンドに似ています。 それでも、テキスト ファイルを開かずに直接編集できるため、より強力です。 BASH の sed
コマンドは、ストリーム エディターの略です。 検索、検索と置換、挿入または削除など、ファイルに対して多くの機能を実行します。
sed
コマンドは、次の方法で文字列の置換に使用できます。
スクリプト例:
STR=AZC
echo "$STR" | sed -r 's/[Z]+/B/g'
出力:
ABC
これは、tr
コマンドの使用に似ています。 sed
コマンドの後の -r
オプションは置換を示し、パターン マッチング (RegEx
) は何を見つけて置換するかを記述します。
sed
コマンドの構文は、異なるシステムの bash バージョン間でわずかに異なり、予期しない動作を引き起こす可能性があることに注意してください。