如何从 Unix 中的文件中删除空行/空白行(包括空格)?

如何从 Unix 中的文件中删除空行/空白行(包括空格)?

如何使用命令行删除 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

简单的解决方案是使用grepGNU或者北达科他州)命令如下。

  • 删除空白行(不包括有空格的行)。

    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

也可以看看:

答案3

sed '/^$/d' file.txt

d 是用于删除一行的 sed 命令。^$是一个仅匹配空行、行首和行尾的正则表达式。

答案4

这是一个awk解决方案:

awk NF file.txt

使用 Awk,NF仅在非空行上设置。当此条件满足时,Awk 默认操作是打印整行。

相关内容