mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Linux - tail コマンドで行を抽出!

[ サーバ構築 ] [ Linux ]

こんばんは。

Linux で、動的にテキストが追加されていくテキストファイルの内容をリアルタイムで確認するのに、tail コマンドをよく使用すると思います。

無条件にコンソール出力するのなら何ら問題はありませんが、行を抽出したい(不要な行を出力させたくない)ことがあります。

以下、そんな場合の対策方法についての備忘録です。

0. 前提条件

  • Linux Mint 14 (64bit) での作業・動作確認を想定。

1. tail コマンドで行を抽出する方法

次のコマンドは、コンソール出力対象のテキストファイル名を “test.txt” とし、"hoge" という文字列を含む行のみを抽出したい場合の例である。
grep コマンドをパイプして実行するが、リアルタイムでコンソール出力させるには --line-buffered というオプションが必要である。
--line-buffered オプションが指定しないと、grep コマンドが結果をバッファに格納してしまい、ある程度たまってからでないと出力されない。

1
$ tail -f test.txt | grep --line-buffered hoge

逆に、"fuga" という文字列を含まない行のみを抽出したい場合は以下のようにする。

1
$ tail -f test.txt | grep --line-buffered -v fuga

--line-buffered オプションについては、man grep には説明がありませんが、grep --help には説明があります。

tailgrep コマンドをパイプした使い方は意外とよく使用するので、記録しておいた次第です。

以上。

Comments