如何从文件中删除空行?

如何从文件中删除空行?

我有一个文件(hosts)其中有些行没有内容,我该如何删除这些没有内容的行?

答案1

使用 sed

键入以下命令:

sed '/^$/d' input.txt > output.txt

使用 grep

键入以下命令:

grep -v '^$' input.txt > output.txt

答案2

很多方法:

  1. 使用sed并编辑该文件。

    sudo sed -i -rn '/\S/p' /etc/hosts
    
  2. 相同,但使用 Perl:

    sudo perl -i -ne 'print if /\S/' /etc/hosts
    
  3. GNU 的新版本awk再次到位:

    sudo awk -i inplace '/\S/' file
    

上述所有解决方案还将删除只包含空格的行。如果您只想删除空行,并保留包含空格或制表符等的行,请将上述所有示例中的更改/\S/为。/^$/

答案3

有时,如果行中包含空格,其他命令将无法删除空白行。下面的命令将删除所有空白行,包括仅包含空格的行。

grep -v '^[[:space:]]*$' input.txt > output.txt

答案4

您可以在默认的 Ubuntu 文本编辑器 (gedit) 中执行此操作:

  • Ctrl+H打开“查找和替换”
  • 在“查找”框中输入,\n\n表示两行新行,中间没有文本。
  • 在“替换”框中输入\n
  • 点击“全部替换”

如果文本文件是在 Windows 中生成的,您可能想尝试一下\r\n

相关内容