sed -iオプションの使い方を完全ガイド!初心者でもわかるLinuxのインプレース編集
生徒
「Linuxでテキストファイルの中身を一気に書き換えたいんですが、毎回エディタを開くのは大変です…」
先生
「それならsedコマンドの-iオプションが便利ですよ。ファイルを直接編集できます。」
生徒
「直接編集って、上書きされるってことですか?失敗したら怖くないですか?」
先生
「大丈夫。仕組みと注意点を順番に説明します。ゆっくり理解していきましょう。」
1. sedコマンドとは?
sedは、Linuxでテキストを加工・変換するためのコマンドです。ファイルの中身を検索して置き換えたり、特定の行だけを削除したりできます。
難しそうに見えますが、イメージとしては「文章を自動で直してくれるロボット」です。人が一行ずつ見なくても、ルールを決めれば一気に処理してくれます。
特に設定ファイルやログファイルなど、文字がたくさんあるファイルを扱うときに活躍します。
2. -iオプション(インプレース編集)とは?
-iオプションは、ファイルを直接書き換えるための指定です。これを「インプレース編集」と呼びます。
通常のsedは、画面に結果を表示するだけで、元のファイルは変わりません。しかし-iを付けると、ファイル自体が更新されます。
例えるなら、コピー用紙にメモを書くのではなく、ノートの本文を書き換えるイメージです。
3. 基本的な使い方(文字を置き換える)
一番よく使われるのが、文字列の置き換えです。基本の形は次のとおりです。
sed -i 's/古い文字/新しい文字/' sample.txt
これは、sample.txtの中にある「古い文字」を「新しい文字」に書き換えます。
sは「置き換え」を意味します。スラッシュで区切って「何を」「何に」変えるかを指定しています。
4. 実際の例で動きを確認しよう
次のようなファイルがあるとします。
cat hello.txt
Hello Linux
Hello World
この中の「Hello」を「Hi」に変えてみます。
sed -i 's/Hello/Hi/' hello.txt
cat hello.txt
Hi Linux
Hi World
コマンドを実行したあと、ファイルの中身が直接変わっていることがわかります。
5. バックアップを取りながら編集する方法
直接編集が不安な場合は、バックアップを作成できます。
sed -i.bak 's/Linux/UNIX/' hello.txt
この場合、元の内容はhello.txt.bakとして保存されます。
失敗しても戻せるので、初心者の方はこの方法がおすすめです。
6. 特定の行だけを編集する
sedでは、行番号を指定して処理できます。
sed -i '2s/World/Linux/' hello.txt
これは「2行目だけ」を対象にして置き換えを行います。
行番号を指定することで、必要な部分だけ安全に編集できます。
7. 複数の置き換えを一度に行う
一つのファイルで何か所も修正したい場合もあります。
sed -i -e 's/Hi/Hello/' -e 's/Linux/GNU\/Linux/' hello.txt
-eを使うと、複数のルールを順番に適用できます。
設定ファイルの一括修正などでよく使われます。
8. よくある注意点と失敗しやすいポイント
-iはとても便利ですが、元に戻せない操作になりがちです。
- 必ずテスト用ファイルで試す
- 最初はバックアップ付きで使う
- 大事なファイルはコピーを取る
これらを意識するだけで、安心して使えるようになります。
9. sed -iと似たコマンドとの違い
sed -iは「自動編集向け」です。一方、viやnanoは人が画面を見ながら編集します。
少しだけ直すならエディタ、たくさんのファイルを一気に直すならsed -iという使い分けがおすすめです。