Bash を使用して文字列内の文字を置換する

Faiq Bilal 2023年6月20日
  1. 方法 1 - tr コマンドを使用する
  2. 方法 2 - Bash パラメータ展開を使用する
  3. 方法 3 - sed コマンドを使用する
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

見てわかるように、文字BDの複数の隣接するオカレンスは、単一の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 バージョン間でわずかに異なり、予期しない動作を引き起こす可能性があることに注意してください。

関連記事 - Bash String