通过 Bash 从文本文件中删除空行,包括空格字符

Nir*_*han 2 linux bash

我尝试使用 'sed' 命令删除空行。

sed -i '/^$/d' file.txt
Run Code Online (Sandbox Code Playgroud)

我的示例 txt 文件看起来像这样。第二行有空格字符。sed 命令只删除空行,而不删除带有空格的行。

Sample text

Sample text
Run Code Online (Sandbox Code Playgroud)

那么是否可以通过 bash 完成此操作。

我的预期输出是

Sample text
Sample text
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 6

使用字符类[:blank:]来表示空格或制表符:

与sed:

sed -i '/^[[:blank:]]*$/ d' file.txt
Run Code Online (Sandbox Code Playgroud)

与perl:

perl -ne 'print if !/^[[:blank:]]*$/' file.txt 
Run Code Online (Sandbox Code Playgroud)

与awk:

awk '!/^[[:blank:]]*$/' file.txt 
Run Code Online (Sandbox Code Playgroud)

与grep:

grep -v '^[[:blank:]]*$' file.txt
Run Code Online (Sandbox Code Playgroud)

如果该工具不支持就地编辑,请利用临时文件,例如grep:

grep -v '^[[:blank:]]*$' file.txt >file.txt.tmp && mv file.txt{.tmp,}
Run Code Online (Sandbox Code Playgroud)