2017-04-06 28 views
0

如何刪除文件的最後一行而不讀取整個文件或在任何臨時文件中重寫它。我不想使用sed,因爲它將整個文件讀入內存。 最後有一個空行。我想刪除它並只將更改保存到該文件,以便文件最後不包含空行。從文件中刪除最後一個空行並保存文件

回答

1

我能想到的最簡單的方法是:

sed -i '${/^$/d}' filename 

編輯只刪除空白端線。

您唯一的選擇不使用sed不會讀取整個文件是stat該文件獲取大小,然後使用dd跳到最後纔開始閱讀。但是,告訴sed只能在最後一行操作,基本上就是這樣。

+0

SED -i -u ... -u意味着* *緩衝,因此降低了內存使用 – NeronLeVelu

+0

在這種情況下,由於你跳到最後,你肯定會想要使用緩衝讀取來加速進程,特別是對於大文件。 –

+0

緩衝速度寫入過程但問題是這裏的內存不處理速度說OP – NeronLeVelu

1

簡單的sed命令來刪除最後一行的內容:

sed '$d' <file> 

這裏在sed $是最後一行。

你可以試試awk命令:

awk 'NR > 1{print t} {t = $0}END{if (NF) print }' file 

使用cat:

cat file.txt | head -n -1 > new_file.txt 
相關問題