wb9688 Asked: 2015-06-13 07:25:40 +0800 CST2015-06-13 07:25:40 +0800 CST 2015-06-13 07:25:40 +0800 CST 如何从文件中删除空行? 772 我有一个文件(主机),其中有些行没有内容,如何删除没有内容的行? text-processing 5 个回答 Voted Best Answer Maythux 2015-06-13T07:27:23+08:002015-06-13T07:27:23+08:00 使用 sed 键入以下命令: sed '/^$/d' input.txt > output.txt 使用 grep 键入以下命令: grep -v '^$' input.txt > output.txt terdon 2015-06-13T07:33:44+08:002015-06-13T07:33:44+08:00 很多种方法: 就地使用sed和编辑文件。 sudo sed -i -rn '/\S/p' /etc/hosts 相同,但使用 Perl: sudo perl -i -ne 'print if /\S/' /etc/hosts GNU 的较新版本,awk再次到位: sudo awk -i inplace '/\S/' file 上述所有解决方案还将删除仅包含空格的行。如果您只想删除空行,并保留包含空格或制表符等的行,请将上述所有示例中的更改/\S/为/^$/。 Zombo 2016-04-17T11:18:19+08:002016-04-17T11:18:19+08:00 你可以在 Ex 模式下使用 Vim: ex -sc v/./d -cx hosts /./查找非空行 v反转选择 d删除 x保存并关闭 Jaydin 2022-01-27T21:44:37+08:002022-01-27T21:44:37+08:00 您可以通过以下方式在默认的 Ubuntu 文本编辑器 (gedit) 中执行此操作: 按Ctrl+H打开查找和替换 在“查找”框中,输入\n\n这表示两个新行之间没有文本。 在“替换”框中,输入\n 点击“全部替换” 如果文本文件是在 Windows 中生成的,您可能想尝试\r\n. mchid 2022-02-18T12:29:17+08:002022-02-18T12:29:17+08:00 有时,如果行中包含空格,其他命令将无法删除空行。以下将删除所有空行,包括仅包含空格的行。 grep -v '^[[:space:]]*$' input.txt > output.txt
使用 sed
键入以下命令:
使用 grep
键入以下命令:
很多种方法:
就地使用
sed
和编辑文件。相同,但使用 Perl:
GNU 的较新版本,
awk
再次到位:上述所有解决方案还将删除仅包含空格的行。如果您只想删除空行,并保留包含空格或制表符等的行,请将上述所有示例中的更改
/\S/
为/^$/
。你可以在 Ex 模式下使用 Vim:
/./
查找非空行v
反转选择d
删除x
保存并关闭您可以通过以下方式在默认的 Ubuntu 文本编辑器 (gedit) 中执行此操作:
Ctrl
+H
打开查找和替换\n\n
这表示两个新行之间没有文本。\n
如果文本文件是在 Windows 中生成的,您可能想尝试
\r\n
.有时,如果行中包含空格,其他命令将无法删除空行。以下将删除所有空行,包括仅包含空格的行。