sedで文字列の置換をするeオプションを解説します

bash

sedコマンドで文字列を置換したい人
「sedコマンドで特定の文字列を置換したいです。どうすればできますか?具体的な利用例やコピーして使えるコマンドの例も見たいです。」

こんな悩みを解決します。

本記事の内容

  • 1.文字列を単純置換する
  • 2.1回限定で置換する
  • 3.複数の置換ルールを適用する
  • 4.正規表現を使って置換する
  • 5.【付録】そもそもsedとは

1.文字列を単純置換する

これだけ覚えておけばOKです

sed -e “s/《置換対象文字列》/《置換後文字列》/g”

文字列「abc」を「XYZ」に置換します

実行結果は以下の通りです。

sedによる実践的な文字列置換の例

sedを用いて、yahoo!トップからダウンロードしたhtmlファイル(下図の左側)から画像へのリンクを非表示にしてみましょう(下図の右側)。

sedを用いた文字列置換の例

まずはダウンロードを行います。

ダウンロードしたhtmlファイルのimgタグをsedを用いて非表示にします。

たったこれだけです。

2.1回限定で置換する

「g」なしで置換すると、最初にマッチした文字列だけを置換します。

sed -e “s/《置換対象文字列》/《置換後文字列》/”

文字列「abc」を一回だけ「XYZ」に置換します

実行結果は以下の通りです。

3.複数の置換ルールを適用する

置換は複数連続して行うこともできます。

sed -e “s/《置換対象文字列①》/《置換後文字列①》/”
 -e “s/《置換対象文字列②》/《置換後文字列②》/”

「ab→AB」と「fg→FG」の2つの置換を行います

実行結果は以下の通りです。

4.正規表現を使って文字列を置換する

文字列「ab」と「fg」をXXに置換します

実行結果は以下の通りです。

5.【付録】そもそもsedとは

sed(Stream EDitor)は、入力ストリーム(ファイルまたはパイプラインからの入力)に対してテキスト変換などのデータ処理をおこなうために使用されるプログラムです(Wikipediaより)。

文字列の置換や削除、行単位で置換結果だけを抽出するなど、多様なテキスト処理を行うための汎用性の高いコマンドです。文字列の置換を行うときはsed、1文字の単純な置換を行うときはtrコマンドを使うと便利です。

参考

sedコマンド – 文字列を置き換える/置換した行を出力する(外部サイト)