sed保持空间

本文深入解析SED命令的高级应用,包括保持空间操作、改变流控制、模式替代及特殊字符使用技巧。通过实例演示如何利用SED进行文本处理,如行连接、字符替换、模式匹配等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SED

三、保持空间

  • h/H hold,将模式空间的内容覆盖h(追加H)到保持空间
  • G/g get,将保持空间内容覆盖g(追加G)到模式空间
  • x exchange,交换两个空间的内容
  • 举例
  • 把多行用,拼接成一行
[root@localhost tmp]#sed 'H;${x;s/\n/,/g;s/^,//};$!d' test

在这里插入图片描述

  • 将行反转输出
[root@localhost tmp]#sed '1!G;h;$!d' test22  
[root@localhost tmp]#sed -n '1!G;h;$p' test22

在这里插入图片描述

理解

在这里插入图片描述

四、改变流

  • 改变默认sed的工作流程(从头到尾执行脚本)

branch
无条件的跳转
用法
[address]b [label]
label定义
:LABEL

举例
test0311文件内容

This is the 0 header line.
This is the 100 first data line.
This is the 200 second data line.
This is the 300 last data line.

无条件跳转

[root@localhost tmp]#sed '2,3b;s/This is/Is this/;s/line./test?/' test0311

带标签的无条件跳转

[root@localhost tmp]#sed '/first/b jump1;s/This is/Is this/;:jump1;s/line./test?/' test0311

在这里插入图片描述

有条件的跳转

[root@localhost tmp]#echo "This, is , a, test, to, remove, coomas."  | sed ':start;s/,//;t start'

在这里插入图片描述

  • test
    有条件跳转到指定标签

五、模式替代

  • &
    &同来替换正则匹配到的内容

例子

[root@localhost tmp]#sed  -r 's/[0-9]+/&s/g' test0311

在这里插入图片描述

  • \1(后向引用)

例子

[root@localhost tmp]#sed  -r 's/(^.*)(\b[0-9]+\b )(.*$)/\2\1\3/g' test0311

在这里插入图片描述

[root@localhost tmp]#echo "abc 123 def" | sed  -r 's/(^.*)(\b[0-9]+ \b)(.*$)/\2\1\3/g' 
123 abc def

六、sed N将两行数据当成一行来处理

1.从字符串中删掉了换行符,导致两行合并成一行
[root@localhost tmp]#sed '/first/{ N; s/\n/ /}' test

在这里插入图片描述

2.替换字符
[root@localhost tmp]#sed 'N ; s/this is/Is this/ ' test 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值