更新されたログファイルを追跡するために「tail-f」を使用しています。次に、その出力をgrepにパイプして、検索語(この場合は「org.springframework」)を含む行のみを表示します。最後に、grepからの出力を3番目のコマンド「cut」にパイプ処理します。
tail -f logfile | grep org.springframework | cut -c 25-
Cutコマンドは、各行の最初の25文字を削除しますgrepから入力を取得できる場合(チェーンから「grep」を削除すると、期待どおりに機能します。)
私はbashでcygwinを使用しています。
実際の結果: 'cut'コマンドに接続するために2番目のパイプを追加すると、入力が(まるでと思っていた場合)待機しているかのようにハングします。
私のシステムでは、出力を取得する前に約8Kがバッファリングされました。このシーケンスは、ファイルをすぐに追跡するように機能しました。
tail -f logfile | while read line ; do echo "$line"| grep 'org.springframework'|cut -c 25- ; done
GNU grepと仮定して、コマンドラインに--line-buffered
を追加します。
tail -f logfile | grep --line-buffered org.springframework | cut -c 25-
編集:
ここでは、grepバッファリングだけが問題ではないようです。カットは行ごとのバッファリングを許可しないためです。
sedなどの制御可能なものに置き換えてみてください。
tail -f logfile | sed -u -n -e '/org\.springframework/ s/\(.\{0,25\}\).*$/\1/p'
またはawk
tail -f logfile | awk '/org\.springframework/ {print substr($0, 0, 25);fflush("")}'