Linuxではファイルに記述されている文字列を、指定した文字列で置換できる「sed」コマンドがあります。ここでは「sed」コマンドの使い方について、以下の内容で解説していきます。
この記事で「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」コマンドについて忘れてしまったら、この記事を参考にしてくださいね!