通常のログリーダーのように、ログファイルの最後の10行を表示します最後の行から開始-これはtailコマンドのバリエーションだと思いましたが、どこにもありません。
最終的にtail -r
、これは私のOSXで機能しました(tac
は機能しません)
tail -r -n10
GNU(Linux)以下を使用 :
tail -n 10 <logfile> | tac
tail -n 10 <logfile>
はログファイルの最後の10行を出力し、tac
(逆スペルの猫)は順序を逆にします。
BSD(OS X)tail
の-r
オプションを使用:
tail -r -n 10 <logfile>
両方の場合、次を試すことができます:
if hash tac 2>/dev/null; then tail -n 10 <logfile> | tac; else tail -n 10 -r <logfile>; fi
注:GNUマニュアルの状態 BSD -r
オプションは、最大でバッファとして大きく、通常は32 KiB "であり、tac
はより信頼性があります。バッファサイズが問題であり、tac
を使用できない場合、bashで機能を書き込む @ ata's answer を使用することを検討できます。
tac
はあなたが望むことをします。 cat
の逆です。
tail -10 logfile | tac
あなたは純粋なbashでそれを行うことができます:
#!/bin/bash
readarray file
lines=$(( ${#file[@]} - 1 ))
for (( line=$lines, i=${1:-$lines}; (( line >= 0 && i > 0 )); line--, i-- )); do
echo -ne "${file[$line]}"
done
./tailtac 10 <somefile
./tailtac -10 <somefile
./tailtac 100000 <somefile
./tailtac <somefile
これは、出力を逆順に印刷するのに最適な方法です
tail -n 10 <logfile> | tac