Linux下删除文件中空行的几种方法

首先约定两个概念empty lines和blank lines

  • empty lines : 只有换行符,没有其他空白字符(空格,tab等)的空行。用正则表达式^$匹配。
  • blank lines : 包含空白字符(空格,tab等),以换行符结尾的空行。用正则表达式^\s*$匹配。

删除empty lines

1
sed '/^$/d' input.txt > output.txt
1
grep -v '^$' input.txt > output.txt

删除blank lines

1
sed '/^\s*$/d' input.txt > output.txt
1
grep -v '^\s*$' input.txt > output.txt
1
awk NF input.txt > output.txt
  1. sed 命令中的d代表delete,即删除命令。
  2. grep 命令中的-v代表invert match,即反向匹配。
  3. 如果想直接处理原文件,不把结果重定向输出到其他文件的话,则使用sed命令的-i(in-place)选项,即:

    1
    sed -i '/^$/d' input.txt
  4. \s匹配任何空白字符,但如考虑系统兼容性问题,用[[:space:]]代替\s。

大师兄 wechat
欢迎关注我的微信公众号:Python大师兄