数秒/分ごとに追加されるファイルがあるとしましょう。最初はファイル全体を読み、最後の行番号(例:last_line_numerは2000)を保存しましたが、後で「grep」コマンドを使用してファイルを読み取り、行番号2001からファイルの終わりまでのパターンを見つけたかったです。どうすればこの目標を達成できますか?
初めて次のコマンドを実行しました。
grep 'tracker.php' apache.log | cut -d' ' -f1-8
grepパラメータの特定の行番号を使用して上記のコマンドを実行したいと思います。
答え1
tailを使用して2001行からファイルを出力し、結果をコマンドにパイプすることができます。
<apache.log tail +2001 | grep 'tracker.php' | cut -d' ' -f1-8
答え2
あなたはそれを使用することができます
awk 'NR<2001 {next} /tracker.php/ {print NR, $1,$2,$3,$4,$5,$6,$7,$8}' apache.log
または
awk 'NR<2001 {next} /tracker.php/ {print NR, $0}' apache.log | cut -d' ' -f1-9
また、ファイル内の一致する行の元の行番号も表示されます。
答え3
使用sed
:
sed '1,2000d; /tracker\.php/!d' | cut -d ' ' -f-8
つまり、1行から2000行(含む)まで削除し、文字列を含まないすべての行も削除しますtracker.php
。残りの行を送ってくださいcut
。