Output file lines from last to first in Bash

后端 未结 5 1567
说谎
说谎 2020-12-13 00:35

I want to display the last 10 lines of my log file, starting with the last line- like a normal log reader. I thought this would be a variation of the tail command,

5条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-13 01:12

    GNU (Linux) uses the following:

    tail -n 10  | tac
    

    tail -n 10 prints out the last 10 lines of the log file and tac (cat spelled backwards) reverses the order.

    BSD (OS X) of tail uses the -r option:

    tail -r -n 10 
    

    For both cases, you can try the following:

    if hash tac 2>/dev/null; then tail -n 10  | tac; else tail -n 10 -r ; fi
    

    NOTE: The GNU manual states that the BSD -r option "can only reverse files that are at most as large as its buffer, which is typically 32 KiB" and that tac is more reliable. If buffer size is a problem and you cannot use tac, you may want to consider using @ata's answer which writes the functionality in bash.

提交回复
热议问题