如何使用命令行删除 Unix/Linux 文件中的空行/空白行(仅包括空格)?
file.txt 的内容
Line:Text
1:<blank>
2:AAA
3:<blank>
4:BBB
5:<blank>
6:<space><space><space>CCC
7:<space><space>
8:DDD
期望输出
1:AAA
2:BBB
3:<space><space><space>CCC
4:DDD
答案1
这行 sed 应该可以解决问题:
sed -i '/^$/d' file.txt
这-i
意味着它将就地编辑文件。
答案2
grep
简单的解决方案是使用grep
(GNU或者北达科他州)命令如下。
删除空白行(不包括有空格的行)。
grep . file.txt
删除完全空白的行(包括有空格的行)。
grep "\S" file.txt
注意:如果您得到不想要的颜色,则意味着您的grep
是别名grep --color=auto
(通过 检查type grep
)。在这种情况下,您可以添加--color=none
参数,或者只是以 身份运行命令\grep
(忽略别名)。
ripgrep
与......类似ripgrep
(适合更大的文件)。
删除空白行(不包括带有空格的行):
rg -N . file.txt
或包括带有空格的行:
rg -N "\S" file.txt
也可以看看:
- 如何从文件中删除空行(包括制表符和空格)?
- 和
sed
:使用 sed 删除空行 - 和
awk
:使用 awk 删除空白行
答案3
sed '/^$/d' file.txt
d 是用于删除一行的 sed 命令。^$
是一个仅匹配空行、行首和行尾的正则表达式。
答案4
这是一个awk
解决方案:
awk NF file.txt
使用 Awk,NF
仅在非空行上设置。当此条件满足时,Awk 默认操作是打印整行。