我尝试使用'sed'命令删除空行。
sed -i '/^$/d' file.txt
我的示例txt文件看起来像这样。第二行有空格字符。 sed命令只删除空行而不删除带空格的行。
Sample text
Sample text
那么通过bash来实现这一点。
我的意图是
Sample text
Sample text
答案 0 :(得分:4)
使用字符类[:blank:]
来表示空格或制表符:
使用sed
:
sed -i '/^[[:blank:]]*$/ d' file.txt
使用perl
:
perl -ne 'print if !/^[[:blank:]]*$/' file.txt
使用awk
:
awk '!/^[[:blank:]]*$/' file.txt
使用grep
:
grep -v '^[[:blank:]]*$' file.txt
如果该工具不支持就地编辑,请利用临时文件,例如grep
:
grep -v '^[[:blank:]]*$' file.txt >file.txt.tmp && mv file.txt{.tmp,}
答案 1 :(得分:2)
sed -i '/^ *$/d' file.txt
或者也匹配其他空白字符,例如标签等:
sed -i '/^[[:space:]]*$/d' file.txt
*字符匹配0或更多前一个字符的实例