sed高级命令

sed语法格式

sed执行模板 = sed ‘模式{命令1;命令2}’ 文件,即逐行读入模式空间,执行命令,最后输出打印出来。

sed的语法格式:

sed [option] 'pattern{sed-command1;sed-command2}' {
   input-file}

sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,直到脚本执行完毕,然后该行被输出,模式(pattern space)被清空。接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。

在这里插入图片描述

N命令

在这里插入图片描述
Next 命令(N):将数据流中的下一行加进来创建一个多行组来处理。
多行Next(N)命令通过读取新的输入行,并将它添加到模式空间的现有内容之后来创建多行模式空间。模式空间最初的内容和新的输入行之间用换行符分隔。在模式空间中嵌入的换行符可以利用转义序列“\n”来匹配。在多行模式空间中,元字符“^”匹配空间中的第一个字条,而不匹配换行符后面的字符。同样,“$”只匹配模式空间中最后的换行符,而不匹配任何嵌入的换行符。在执行next命令之后,控制将被传递给脚本中的后续命令。

Next命令于next命令不同,next输出模式空间的内容,然后读取新的输入行,next命令不能创建多行模式空间。

实例:

如果要将”Look at your mother“改成 一行的内容,但是他在文件的前两行上

[root@localhost ~]# cat tests 
Look at
your mother

我们可以使用装逼语法直接实现

[root@localhost ~]# sed '/Look/{N;s/\n//}' tests  
Look at your mother

在这个例子中,sed 命令查找含有单词 Look的那行文本。找到该行后,它会用 N 命令将下一行合并到那行,然后用替换命令 s 将换行符替换成空。

D命令

D命令是删除当前模式空间开端至\n的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed。.
例子:

编写一个实现查找一系列空行并输出单个空行的脚本,以看看它们之间的区别。

[root@localhost ~]# cat tests 
This is 1

This is 2


This is 3



This is 4





This is 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值