sed进阶之创建sed实用工具

19 篇文章 0 订阅

shell脚本编程系列


加倍行间距
sed '$!G' data2.txt

保留空间的默认值是一个空行,通过G命令可以将保留空间内的内容附加到模式空间内容之后,但是最后一行不需要附加,所以通过排除命令!进行排除

在这里插入图片描述

对可能含有空行的文件加倍行间距
sed '/^$/d;$!G' data6.txt

首先考虑删除数据流中所有的空行,然后再通过上一个案例的方式添加空行即可
在这里插入图片描述

给文件中的行编号
sed '=' data2.txt | sed 'N;s/\n/ /'

使用=号可以显示行号,但是行号与内容是在不同行,如果要显示在同一行,还需要通过将行号与内容行放在一个模式空间中然后将换行符替换为空
另外 nl命令和cat -n都可以添加行号,但是格式需要调整

cat -n data2.txt | sed 's/     //;s/\t/ /'

在这里插入图片描述

打印末尾行
sed -n '$p' data2.txt

在这里插入图片描述

删除连续的空行

删除连续的空行的关键在于创建包含一个非空行和一个空行的地址区间,如果sed编辑器遇到了这个区间,它不会删除行,但对于不属于这个区间的行(两个或更多的空行),则执行删除操作。
对应的脚本为:/./,/^$/!d
指定的区间是/./到/^$/,区间的开始地址会匹配任何至少含有一个字符的行,区间的结束地址会匹配一个空行,在这个区间内容的行不会被删除

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

在这里插入图片描述

删除开头的空行
/./,$!d

这个脚本用地址区间来删除行,这个区间从含有字符的行开始,一直到数据流结束,在这个区间内容的任何行都不会从输出中删除

删除结尾的行
sed '{
> :start
> /^\n*$/{$d;N;b start}
> }' data10.txt

该地址模式能够匹配只含一个换行符的行,如果找到这样的行,而且是最后一行,删除命令就会删除它,如果不是最后一行,那么N命令会将下一行附加到它后面,然后分支命令会跳到循环起始位置重新开始。
在这里插入图片描述

删除html标签
sed 's/<[^>]*>//g;/^$/d' data11.txt

这里要注意对于first不能把中间的first也匹配进来了,所以匹配时需要在<>中间指定字符是非>即可,另外该脚本还通过/^$/d删除了空行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lang20150928

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

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

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

打赏作者

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

抵扣说明:

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

余额充值