如何从文件中删除多个空白行?

巴德·科珀鲁德

我有一些用于记笔记的文本文件-纯文本,通常仅使用cat >> file有时我使用一两行空白(仅返回-换行符)来指定新的主题/思路。在每个会话结束时,在用Ctrl+关闭文件之前D,我通常添加很多(5-10)空行(返回键)以分隔会话。

这显然不是很聪明,但是它对我有用。不过最终了很多很多不必要的空行,所以我在寻找一种方式来删除(大部分)的额外线。是否有Linux命令(剪切,粘贴,grep,...?)可以直接与几个选项一起使用?或者,是否有人对sed,awk或perl(可以在任何脚本语言中使用,尽管我更喜欢sed或awk)的脚本都能满足我的需求?用C ++编写某些东西(我实际上可以自己做),似乎有点过头了。

情况1:我需要的是一个脚本/命令,该脚本/命令将删除多于两个(3个或更多)连续的空行,并将其替换为仅两个空行。尽管也可以对其进行调整以删除多于一行(两行或更多)和/或仅用一个空白行替换多个空白行,这将是很好的选择。

情况2:我还可以使用脚本/命令来删除两行文本之间单个空白行,但照原样保留多个空白行(尽管删除其中一个空白行也是可以接受的)。

斯蒂芬·查泽拉斯(Stephane Chazelas)

情况1:

awk '!NF {if (++n <= 2) print; next}; {n=0;print}'

情况2:

awk '!NF {s = s $0 "\n"; n++; next}
     {if (n>1) printf "%s", s; n=0; s=""; print}
     END {if (n>1) printf "%s", s}'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章