Linux - tail コマンドで行を抽出!
Updated:
Linux で、動的にテキストが追加されていくテキストファイルの内容をリアルタイムで確認するのに、tail
コマンドをよく使用すると思います。
無条件にコンソール出力するのなら何ら問題はありませんが、行を抽出したい(不要な行を出力させたくない)ことがあります。
以下、そんな場合の対策方法についての備忘録です。
0. 前提条件
- Linux Mint 14 (64bit) での作業・動作確認を想定。
1. tail コマンドで行を抽出する方法
次のコマンドは、コンソール出力対象のテキストファイル名を “test.txt” とし、”hoge” という文字列を含む行のみを抽出したい場合の例である。
grep
コマンドをパイプして実行するが、リアルタイムでコンソール出力させるには --line-buffered
というオプションが必要である。
--line-buffered
オプションが指定しないと、grep
コマンドが結果をバッファに格納してしまい、ある程度たまってからでないと出力されない。
$ tail -f test.txt | grep --line-buffered hoge
逆に、”fuga” という文字列を含まない行のみを抽出したい場合は以下のようにする。
$ tail -f test.txt | grep --line-buffered -v fuga
--line-buffered
オプションについては、man grep
には説明がありませんが、grep --help
には説明があります。
tail
と grep
コマンドをパイプした使い方は意外とよく使用するので、記録しておいた次第です。
以上。
Comments