Linux
從文件中獲取倒數第 n 行
我有一個包含很多行的文件,我需要最後 n 行(特別是底部的第 95 行)。我怎麼能繼續這樣做呢?一種方法是使用 tail 但它會列印從最後到第 95 個的所有內容,而我只需要第 95 個。
如您所述,您可以使用
tail
從文件中獲取最後 95 行。您只需要其中的第一個,為此有一個名為head
. 所以tail -95 file | head -1
使用
tail
可能是你能做的最好的。另一種方法是將這些行讀入一個行數組,並在到達文件末尾時列印出 n-95 行。您實際上不需要儲存所有行,因此您可以擁有一個包含 95 個元素的循環緩衝區來儲存您讀取的最後 95 行。
@icarus 的答案可以解決問題,但只是添加另一個選項:
tac file | sed -n 95p
tac
將反向列印文件,sed -n 95p
並將列印第 95 行。由於文件是反向列印的,它將顯示從底部開始的第 95 行。更新
正如@icarus 在評論中提到的:
缺點是整個文件都通過管道傳遞,而不僅僅是 95 行。在列印第 95 行後告訴 sed 顯式退出將消除此缺點。
所以這是一個更新的命令,它在列印第 95 行後退出:
tac file | sed -n '95{p; q}'