在 Linux 中刪除檔案的最後 N 行
簡介
有時您可能需要刪除 Linux 檔案的最後幾行。例如,您可能有一個不斷新增的日誌檔案,並且只想保留最新的條目。在本教程中,我們將探討在 Linux 上刪除檔案最後 N 行的幾種不同方法。
使用 head 和 tail 命令
head 和 tail 命令是兩個非常有用的實用程式,分別用於顯示檔案的開頭和結尾。透過組合這些命令,我們可以輕鬆刪除檔案的最後 N 行。
要刪除檔案的最後“N”行,我們可以使用以下命令:
$ head -n -N file.txt > temp && mv temp file.txt
讓我們分析一下這個命令:
“head” 命令用於檢視檔案的開頭。-n 選項用於指定要顯示的行數,-N 選項用於指定要從檔案末尾跳過的行數。
> 運算子用於將 head 命令的輸出重定向到一個名為 temp 的新檔案。
&& 運算子用於連線多個命令。在本例中,它用於將臨時檔案移動到原始檔案的位置,並覆蓋它。
以下是在實踐中使用此命令的示例:
$ head -n -7 file.txt > temp && mv temp file.txt
此命令將刪除 file.txt 檔案的最後 7 行,並將編輯後的檔案儲存到相同位置。
使用 sed 命令
刪除檔案最後 N 行的另一個選擇是使用 sed 命令。sed 命令是一個功能強大的文字處理實用程式,可用於執行各種任務,包括從檔案中刪除行。
要使用 sed 刪除檔案的最後 N 行,我們可以使用以下命令:
$ sed -i ':a;$q;N;$d;ba' file.txt
此命令乍一看可能令人生畏,但一旦分解它實際上非常簡單。
相反,-i 選項用於修改檔案,這意味著修改後的檔案將儲存在與原始檔案相同的位置。
:a 和 ba 命令用於在 sed 中建立迴圈。
$q 命令用於在到達檔案末尾時退出迴圈。
N 命令用於將下一行新增到模式空間。
$d 命令用於從模式中刪除空格,該模式包含檔案的最後 N 行。
以下是在實踐中使用此命令的示例:
$ sed -i ':a;$q;N;$d;ba' file.txt
此命令將刪除 file.txt 檔案的最後一行,並將編輯後的檔案儲存到相同位置。
使用 tac 命令
刪除檔案最後 N 行的另一個選擇是使用 tac 命令。tac 命令用於反向連線和列印檔案,這對於刪除檔案的最後 N 行很有用。
要使用 tac 刪除檔案的最後 N 行,我們可以使用以下命令:
$ file tac.txt | head -n -N > temp && mv temp file.txt
讓我們分析一下這個命令:
tac 命令用於反向連線和列印檔案 file.txt。
head 命令用於檢視反轉檔案的開頭。-n 選項用於指定要顯示的行數,-N 選項用於指定要從檔案末尾跳過的行數。
> 運算子用於將 head 命令的輸出重定向到一個名為 temp 的新檔案。
&& 運算子用於連線多個命令。在本例中,它用於將臨時檔案移動到原始檔案的位置,並覆蓋它。
以下是在實踐中使用此命令的示例:
$ tac.txt file | head -n -3 > temp && mv temp file.txt
此命令將刪除 file.txt 檔案的最後 3 行,並將編輯後的檔案儲存到相同位置。
結論
在本教程中,我們探討了在 Linux 上刪除檔案最後 N 行的三種不同方法。每種方法都有其優點和缺點,因此您可以選擇最適合您需求的方法。無論您使用 head 和 tail 命令、sed 命令還是 tac 命令,您現在都應該擁有在 Linux 上刪除檔案最後 N 行所需的工具。