29. sed

目次へ 前の項目へ次の項目へ

ここまで各種のプログラミング言語を体験してきました。しかし、LinuxはUNIX系 のシステムなので、わざわざ何らかの言語を使用しなくても便利なツールが使用で きます。ここからは、そのようなツールについてちょっとだけ紹介しましょう。

sed とはStream EDitorの略です。ある種のエディタなのですが、強力な文字列処理 機能を持っており、文字入力というよりも検索置換などの編集に使用します。今ま で使用してきたgEditなどを「対話型エディタ」、そして、ここで使用する sed のようなエディタを「非対話型エディタ」と呼ぶこともあります。

ターミナルから操作を行うときには、たとえば、以下のようなコマンドで行います。

$ sed -e 's/old/new/g' file

のようなコマンドを実行すると file という名前のファイルの中にある oldという文字列をnewという文字列に置換して、画面に表示します。たとえば、先 程作成したloop.rbというスクリプトの中の puts a という命令の部分を print a, "\n" に変えてみましょう。次のようにしてみます。

$ sed -e 's/puts/print/g' -e 's/a$/a, "\\n"/g' loop.rb

これを実行すると、画面にどのように表示されたでしょうか。

ここで、少しだけ注意することがあります。上のコマンドによる編集は二つのこと を行っていて、前の方は例と同じように単純な置換です。しかし、二つめの検索置 換の操作には変な記号がついています。まず、検索する方ですが、a の 後ろに $ マークがあります。実は、これは、「正規表現」と呼ばれる表 記法で、文字列の並びや位置、文字種などを分類表現する特殊な表現法です。コン ピュータにおける文字列処理にいつも使用されるもので、サーチエンジンを用意し ている検索サイトの検索項目にも応用できる、覚えておくと便利の良いものです。 ここのドルマークの意味は、「行末」を指しています。すなわち、行が a で終わっているときだけのその a だけを置換の対象にするのです。 次は、それを改行文字つきに置換するのに改行文字が \\n になってしまっ ています。\ バックスラッシュは、特殊な文字の意味を打ち消す意味を 持っていて、一つめのバックスラッシュで二つめのバックスラッシュの意味を打ち 消してただのバックスラッシュという記号であることを教えています。そのために、 二つ重なったバックスラッシュになってしまいました。

上記以外にも、特定の文字列を削除する、特定の行を削除するなど、種々の用途に 使える sed は、知っておくと便利です。また、スクリプトを作成して、 実行させることも可能です。さらに、シェルの機能と組み合わせてファイル名をあ る規則に従って一斉に変えるような操作も可能です。


ページの先頭へ目次へ 前の項目へ次の項目へ