在Linux中删除一个文件的最后N行

在Linux中删除一个文件的最后N行

介绍

有时候,你可能需要在Linux上删除一个文件的最后几行。例如,你可能有一个不断被添加的日志文件,你想只保留最近的条目。在本教程中,我们将探讨一些不同的方法来删除Linux上文件的最后N行。

使用头和尾的命令

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行所需的工具。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Linux 基础