【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」コマンドについて忘れてしまったら、この記事を参考にしてくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次