Linuxのシェル上でファイルの一部を書き換えたいときがあります。
たとえば、設定ファイルを書き換えるシェルスクリプトを作りたい、など。
テキスト変換コマンドsed
sedは、stream editorの略で、入力されたテキストに何かしらの変換をかけて出力するコマンドです。
テキトーにfruitsなどというテキストファイルを作っておきます。
$ cat << 'EOT' >> fruits
> apple
> banana
> orange
> grape
> EOT
中身を表示してみます。フルーツ盛り合わせです。
$ cat fruits
apple
banana
orange
grape
中身をsedに渡して、バナナをバナナジュースにします。
$ cat fruits | sed "s/banana/banana juice/"
apple
banana juice
orange
grape
bananaの部分がbanana juiceになって表示されました!でも、まだ保存はされていません。
リダイレクトで保存
テキストの変換はできたので、あとは元のファイルに保存しなおせば完了です。
$ cat fruits | sed "s/banana/banana juice/" > fruits
$ cat fruits
apple
banana juice
orange
grape
バナナジュースができました!
もう少し短く書く
sedコマンドは標準入力から文字列を受け取ることもできますし、パラメータで指定されたファイルからテキストを呼んで処理することもできます。
sed -e "s/banana/banana juice/" fruits > fruits
これでも同じようにバナナジュースができます!
コメント