有两种可能的方法可以用sed删除文本文件中的空行;下面列出了这些方法,并在本指南的下一部分中详细讨论。
- 方法1:如何用sed删除文本文件中的所有空行
- 方法2:如何用sed删除文本文件中的特定行
方法1:如何用sed删除文本文件中的所有空行
在深入研究这个方法之前,让我们了解一下使用sed删除空行的语法。
语法
sed [options] ‘/^$/d’ [file name]
/^"表示必须到文本文件的最后一行,"d"表示删除正在进行中。
本节将指导你在流编辑器(sed)的帮助下删除一个文本文件中的所有行。
我们创建了一个文本文件 "delete.txt";首先,使用 "cat"命令获得该文件的内容,如下所示,我们使用了"-n"选项,这样我们也可以获得行数。
我们观察到有多个空行,它们影响了这个文本文件的美观,读者可能不会注意到这些内容。
$ cat -n delete.txt

因此,为了避免上述情况,你必须删除这些空行,以简化阅读过程;下面提到的命令将从 "delete.txt"文件中删除所有这些行。
现在你可以注意到,空行被洗掉了,只有那些包含一些文字的行被打印出来,但结果只显示在终端上,而原始文件保持不变。
$ sed ‘/^$/d’ delete.txt

如果你想删除空行并更新原始文件,那么你必须使用原地选项"-i",下面提到的命令将帮助你这样做。
$ sed -i ‘/^$/d’ delete.txt

方法2:如何使用sed删除文本文件中选定的空行
在一个文本文件中删除特定行的语法写在下面。
语法
sed [options] ‘(line-number)d’ [filename]
该命令所依赖的语法的主要部分是"(line-number)d'";你必须在"(line-number)"中输入空行的确切行号,字母 "d"表示插入的行号将被删除。
你可以使用sed命令删除文本文件中的一些特定行;我们为这一部分创建了一个新的文本文件 "new.txt"。例如,下面命令的输出显示行号 "2"是空的。
$ cat -n newfile.txt

如果你想运行命令只删除这一行,那么你必须像我们在下面提到的命令中那样指定行号。
$ sed ‘2d’ newfile.txt

你也可以用这种方法删除连续的行;例如,"new.txt"文件有3个空行 "4,5,6",在下面的图片中可以看到。
$ cat -n new.txt

要删除这三个连续的行;你必须在开始和结束的行号之间插入",",正如在下面的命令中可以看到。
$ sed ‘4,6d’ new.txt

最后,你也可以使用到位的选项"-i"来永久保存修改的内容,因为如果没有这个选项,sed命令会在终端打印出结果,我们已经修改了上面的命令,使用了"-i"选项。
$ sed -i ‘4,6d’ new.txt

结论
Ubuntu支持多种方法来处理文本文件中的数据;例如,你可以使用Ubuntu的默认文本编辑器、nano编辑器等。然而,Ubuntu的sed命令行工具是所有这些编辑器中的佼佼者,因为它具有从终端访问文件和不打开文件进行修改的功能。在这篇文章中,我们使用sed命令来删除文本文件中的空行,并描述了这种操作的两种方法。"方法1"特别适用于当你在一个文本文件中有数百行,并且你想一次删除所有的空行。另一方面,"方法2"适用于删除小文件中的空行,你可以一个一个地删除行。然而,如果你想遵循 "方法2",你必须自己寻找空行。因此,如果对两种方法进行比较,"方法1"在删除空行方面优于 "方法2"。