メールマガジン 経営相談 情報技術 活動実績 経歴等 問合せ リンク
  sedコマンド
 sedコマンドはストリームエディタと呼ばれるバッチ方式のエディタ(メモ帳のようなもの)です。コマンドラインで命令をオプションで設定しながら、テキストファイルを編集します。もう少し読み進んでもらえれば、なんとなくわかるでしょう。

普通のエディタとの違い
 通常のエディタは、テキストファイルを開いてキーボードから直接入力して編集します。例えば、文字を消したければ、その位置にカーソルをもっていってDELキーを押せばOKです。これはワープロと同じなので、ほとんどの方が感覚でわかると思います。では、sedは?
 sedは例えば、「editer」という言葉を「editor」に直したければ、コマンドラインから、
sed -e "s/editer/editor/g" textfile.txt > result.txt
のようにコマンドを打つのです。上の意味はtextfile.txt内のediterをeditorに変えて、result.txtというファイルに書き出せというものです。

メリットは何か?
 面倒です。普通のエディタでやった方が全くそういう作業は簡単にできそうですね。そう思いませんか。おっしゃるとおりです。1つのテキストファイルが対象なら。。。
 複数のファイルを一括してやりたいとか、バッチ処理でどんどんやりたいとか、そういう要求がある場合はsedの出番です。今回、私にはそういう要求ができたので、sedをちょっとかじってみようというわけです。

GNU sedのインストール
 Windowsでも使えるようなものがありますので、興味のある方はぜひやってみてください。Vector等のソフトウェアダウンロードサービスのサイトから落とすことができます。ダウンロードしたら、解凍して、そうですね、sed.exeをc:\windows\commandあたりのディレクトリに移しておけば、良いと思います。インストールはその程度です。
 ちなみにLinuxでは設定しなくても、インストール時にデフォルトのコマンドとして使えるようになっています。

私が実行中のこと
 さて、私が何をしようとしているのかを簡単に話しておきます。
 あるログファイル(データへのアクセス等の結果を書き出したもの)をデータベース上に綺麗に入れて、分析するための元データを作りたいのです。ログファイルは大体以下のような形式です。
Who : Mr.Sagawa
Where : From Office
Services : telnet
というような感じです。これを最終的には、
Mr.Sagawa|From Office|telnet
といような形式のCSVにしたいのです。こうすることによって縦に並んでいたものが横に並び、EXCELやAccessといったアプリケーションでも読みやすくなるのです。

で、今回は、、、
 で、今回はとりあえず、不要なスペースを取り除くということで、下記のようなsedコマンドを書いて実行しました。
sed -e "s/ //g" logs.txt > logs_result.txt
このコマンドによって、「Who : Mr.Sagawa」は、「Who:Mr.Sagawa」に詰まるのです。
次回は、awkを使って、CSV形式に近づきます。
初めに戻る