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

シェル/bash

sedコマンドで文字列を置換したい人
「sedコマンドを使って、ファイル内の特定の文字列を置換したいです。どうすればできますか?具体的なオプションの指定、利用例、コピーして使える例も欲しいです。」

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

この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。

これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。

本記事の内容

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

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

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

上の構文を使って、文字列「abc」を大文字:「ABC」に置換します

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

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

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

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

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

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

たったこれだけです。

2.1回限定で置換する

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

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

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

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

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

置換は1回のコマンドで複数指定し、連続して行うこともできます。

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

次の例では、「ab→AB」と「fg→FG」の2つの置換を行います

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

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

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

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

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

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

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

参考

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