sed -fオプションの使い方を完全ガイド!初心者でもわかるLinuxテキスト置換スクリプト入門
生徒
「Linuxで文字を置き換えるって聞いたんですけど、毎回長いコマンドを書くのは大変そうです…」
先生
「そんなときに便利なのがsed -fです。命令をファイルにまとめて実行できますよ。」
生徒
「えっ、コマンドをファイルに書けるんですか?パソコン初心者でも大丈夫ですか?」
先生
「大丈夫です。ノートに手順を書く感覚で使えます。一つずつ見ていきましょう。」
1. sedコマンドとは?
sedコマンドは、Linuxでテキストを自動で加工・変換するための基本コマンドです。文章の中の文字を置き換えたり、不要な行を削除したりできます。
難しそうに見えますが、役割はとても単純です。「文章を流し台に流して、決められたルールで加工する機械」のようなイメージを持つと理解しやすくなります。
2. -fオプションでできること
-fオプションは、sedの命令をファイルから読み込んで実行するための指定です。命令が多くなると、1行のコマンドに書くのは大変になります。
そこで、命令だけを別のファイルに保存し、それをまとめて実行できるのがsed -fです。料理で言うと「レシピを見ながら調理する」感覚に近いです。
3. sedスクリプトファイルを作ってみよう
まずは、sedの命令を書いたファイルを作ります。ここではreplace.sedという名前のファイルを用意します。
nano replace.sed
s/apple/orange/g
この1行は「appleという文字をorangeに全部置き換える」という意味です。sは置換、gは行の中すべてという指定です。
4. sed -fでスクリプトを実行する
次に、テキストファイルに対してsedスクリプトを実行します。ここではfruit.txtを加工します。
sed -f replace.sed fruit.txt
I like orange pie.
orange juice is tasty.
元のファイルを書き換えず、画面に結果だけ表示されます。安全に試せるのもsedの良いところです。
5. 複数の命令をまとめて書く方法
sed -fの強みは、複数の命令を順番に実行できることです。命令は1行ずつ書くだけです。
cat edit.sed
s/dog/cat/g
s/cat/animal/g
sed -f edit.sed text.txt
animal is cute.
上から順に処理されるため、変化の流れをノートの手順書のように管理できます。
6. -iオプションと組み合わせる
実際の作業では、ファイルを直接書き換えたいこともあります。その場合は-iオプションを組み合わせます。
sed -i -f replace.sed fruit.txt
これは「レシピ通りに実際の料理を作る」イメージです。一度実行すると元に戻せないため、初心者のうちはバックアップを取ってから使いましょう。
7. sed -eとの違い
-eオプションは、命令をコマンドラインに直接書く方法です。短い処理なら便利ですが、長くなると読みにくくなります。
-fは命令をファイルに分けるため、再利用しやすく、ミスも減らせるのが特徴です。初心者ほど-fを使うメリットは大きいです。
8. 初心者がつまずきやすいポイント
よくある失敗は「スクリプトファイルの中に余計な文字が入っている」ことです。コメントを書く場合は#を使います。
また、ファイル名やパスの指定ミスも多いです。わからなくなったらlsで確認しながら進めると安心です。