【Linuxコマンド】sedで文字列を置換する方法

Linuxではファイルに記述されている文字列を、指定した文字列で置換できる「sed」コマンドがあります。ここでは「sed」コマンドの使い方について、以下の内容で解説していきます。

sed_image

この記事で「sed」コマンドで文字列を置換する方法についてわかりやすく解説していますので、ぜひ使い方を覚えておきましょう!

sedコマンドの使い方

「sed」コマンドは指定したファイルの文字列を所定の書式に従って文字列を置換して出力します。文字列を置き換えるには、以下の書式で記述します。

$ sed s/置換対象文字列/置換後文字列/ ファイル名

以下では「appleorangemelon」と記述されている「sample.txt」の文字列を置換しています。

$ sed s/orange/ORANGE/ sample.txt

実行結果:

appleORANGEmelon

文字列が置き換えられて出力されました。また、以下のように「cat」コマンドの後にパイプ「|」で「sed」コマンドを繋げることでも同様の結果を得られます。

$ cat sample.txt | sed s/apple/APPLE/

「sed」コマンドはあくまで文字列を置換して出力するのみで、実際のファイルの内容の書き換えは行いませんので注意しましょう。もし、置換した内容をテキストに保存したい場合はリダイレクト「>」を使用しましょう。

「cat」コマンドについては、以下の記事で詳しく解説しています!

sedコマンドのオプション

sedで使用するオプションは以下となります。

オプション説明
-e指定したスクリプトで置換を行う
-f ファイル指定したファイルに記述されているスクリプトファイルの内容を追加する
-r拡張正規表現を使用する

sedコマンドの便利な使い方

全行を置換する

はじめに紹介した書式では、1つの行に複数の置換対象文字列に一致した文字列が存在した場合でも、最初に一致した文字列のみしか置換されません。

そこで全ての一致した文字列を置換するためには以下のように行います。

$ sed -e s/apple/APPLE/g sample.txt

実行結果:

APPLEorangemelonAPPLE

行頭、行末を置換

行頭のみ、行末のみ置換する場合は以下のように記述します。

$ sed -e "s/^apple/APPLE/" sample.txt
$ sed -e "s/apple$/APPLE/" sample.txt

複数の置換処理を実施

置換対象文字列が複数ある場合はスクリプトを複数指定すればOKです。

$ sed -e "s/apple/APPLE/" -e "s/orange/ORANGE/" sample.txt

行を削除する

指定した行を削除するには「d」を指定します。たとえば、2行目を削除する場合は「2d」とします。

$ sed -e '2d' sample.txt

また、複数行を削除することもできます。以下1〜3行目を削除しています。

$ sed -e '1,3d' sample2.txt

Linuxについてもっと知りたい方へ

そもそもLinuxについて、

実はなんとなくしか理解していない…
Linuxを効率よく学習する方法が知りたい

といった情報を知りたい方は、以下の記事も参考にしてみてくださいね!



まとめ

ここでは、「sed」コマンドで文字列を置換する方法について、

  • sedコマンドとは
  • sedコマンドの使い方
  • sedコマンドのオプション
  • sedコマンドの便利な使い方

などについて解説しました。「sed」コマンドは文字列を置換するときに非常に便利ですので、使い方についてはよく理解しておきましょう。

もし、「sed」コマンドについて忘れてしまったら、この記事を参考にしてくださいね!

Writer

侍エンジニア編集部

株式会社SAMURAI

侍エンジニアは「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI ENGINEER Plus

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close