删除连续的空白行,删除开头的空白行,删除结尾的空白行

删除连续的空白行

删除连续空白行的关键在于创建包含一个非空白行和一个空白行的地址区间。如果sed编辑
器遇到了这个区间,它不会删除行。但对于不匹配这个区间的行(两个或更多的空白行),它会
删除这些行。

 sed '/./,/^$/!d' data.txt

删除开头的空白行

  sed '/./,$!d' data.txt 

这个脚本用地址区间来决定哪些行要删掉。这个区间从含有字符的行开始,一直到数据流结
束。在这个区间内的任何行都不会从输出中删除。这意味着含有字符的第一行之前的任何行都会删除。

删除结尾的空白行

很遗憾,删除结尾的空白行并不像删除开头的空白行那么容易。就跟打印数据流的结尾一样,删除数据流结尾的空白行也需要花点心思,利用循环来实现。
在开始讨论前,先看看脚本是什么样的。

sed '{ 
:start 
/^\n*$/{$d; N; b start } 
}' 

可能乍一看有点奇怪。注意,在正常脚本的花括号里还有花括号。这允许你在整个命令脚本
中将一些命令分组。该命令组会被应用在指定的地址模式上。地址模式能够匹配只含有一个换行符的行。如果找到了这样的行,而且还是最后一行,删除命令会删掉它。如果不是最后一行,N命令会将下一行附加到它后面,分支命令会跳到循环起始位置重新开始。
下面是实际的脚本。

$ cat data.txt 
This is the first line. 
This is the second line. 



$ sed '{ 
> :start 
> /^\n*$/{$d ; N ; b start } 
> }' data.txt 
This is the first line. 
This is the second line. 
$ 

这个脚本成功删除了文本文件结尾的空白行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄宝康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值