![](/img/trans.png)
[英]How to delete first two lines and last four lines from a text file with bash?
[英]Output file lines from last to first in Bash
我想顯示我的日志文件的最后10行, 從最后一行開始 - 就像普通的日志閱讀器一樣。 我認為這將是tail命令的變體,但我無法在任何地方找到它。
GNU(Linux) 使用以下內容 :
tail -n 10 <logfile> | tac
tail -n 10 <logfile>
打印出日志文件的最后10行, tac
(cat拼寫向后)反轉順序。
tail
BSD(OS X)使用-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
,您可能需要考慮使用@ ata的答案 ,該答案將功能寫入bash。
tac
做你想要的。 這是cat
的逆轉。
tail -10 logfile | tac
我最終使用tail -r
,它在我的OSX上工作( tac
沒有)
tail -r -n10
這是以相反順序打印輸出的完美方法
tail -n 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.