侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

sed标签函数

2023-11-22 星期三 / 0 评论 / 0 点赞 / 65 阅读 / 5733 字

#sed标签函数整理: #datetime:20160603202300 #auth:shashen #QQ:linux /shell/awk/sed 联盟 219636001 #感谢baby,K神,

#sed标签函数整理:
#datetime:20160603202300
#auth:shashen
#QQ:linux /shell/awk/sed 联盟 219636001
#感谢baby,K神,随意哥,大R等,以及群里其他的大神的帮助
#此文是献给有一定sed基础的伙伴,大神可以无视我。
#我是个新人,如有解释的不当之处,请见谅。

sed 标签函数: 共6种模式   T, t, b, T:label, t:label,  b:lable  (:lable 是可选的,可以是字母,或者数字)


[localhost]#  echo -e "123/n456/n789"
123
456
789

例子:
1.
[localhost]# echo -e "123/n456/n789"|sed 's#123#& ok#;t;s#.*#& xxoo#;'   (t)
123 ok
456 xxoo
789 xxoo

共两个命令:替换"123"为"123 ok";和替换原文为"& xxoo"


分析:
(commad1;t;commad2)

(注释:1)commad1执行替换成功的行,遇到t,并且没有接标签,不会执行后边的commad2;
             2)commad1执行替换失败的行,则会执行command2)

(默认没有替换就是替换失败)

2.
[localhost]# echo -e "123/n456/n789"|sed 's#123#& ok#;T;s#.*#& xxoo#;'     (T)
123 ok xxoo
456
789

分析:
(commad1;T;commad2)

(注释:1)commad1执行替换成功的行,遇到T,并且没有接标签,会继续执行command2;
             2)commad1执行替换失败的行,不会执行command2)

(默认没有替换就是替换失败)


3.
[localhost]#echo -e "123/n456/n789"|sed 's#123#& ok#;b;s#.*#& xxoo#;'   (b)
123 ok
456
789

分析:
(commad1;b;commad2)

(注释:commad1执行替换成功或者失败的行,遇到b,并且没有接标签,会无条件直接跳到脚本末尾,所以command2不会执行)


4.
[localhost]#echo -e "123/n456/n789"|sed '/123/{s##& ok#;ta};s#.*#& xxoo#;b;:a;a/###'    (ta)
123 ok
###
456 xxoo
789 xxoo

分析:{commad1;ta};{command2};b;{:a;commd3}

(注释:1)匹配到/123/的行,command1执行替换成功,会先跳到标签:a处,会继续执行command3,而不会执行command2;
         2)其他行先执行command2,碰见b就跳到脚本末尾,不会执行command3,如果不接b,它还会继续执行command3.)


5.
[localhost]# echo -e "123/n456/n789"|sed '/123/s##& ok#;ta;s#.*#& xxoo#;b;:a;a/###'     (ta)
123 ok
###
456 xxoo
789 xxoo

分析:{command1};ta;{command2};b;:a;{commad3}

(注释:1)所有行,command1执行替换成功的行,会先跳到标签a处,会继续执行command3,而不会执行command2;
           2)command1执行替换失败的行,不会先跳转标签a去执行command3,而是会先执行command2,碰见b就跳到脚本末尾,不会执行command3,如果不接b,它还会继续执行command3.)

(默认没有替换就是替换失败)


6.
[localhost]# echo -e "123/n456/n789"|sed '/123/{s##& ok#;Ta};s#.*#& xxoo#;b;:a;a/###'     (Ta)
123 ok xxoo
456 xxoo
789 xxoo

分析:{commad1;Ta};{command2};b;{:a;commd3}
(注释:1)匹配到/123/的行,command1执行替换成功,不会先跳到标签a处去执行command3,而是先执行command2,碰到b,跳到脚本末尾,如果不加b,会继续执行command3;
          2)其他行则执行command2,遇到b就跳到脚本末尾,不会执行command3,如果不接b,它还会继续执行command3.)
      


7.
[localhost]# echo -e "123/n456/n789"|sed '/123/s##& ok#;Ta;s#.*#& xxoo#;b;:a;a/###'       (Ta)
123 ok xxoo
456
###
789
###

分析:{commad1};Ta;{command2};b;{:a;commd3}

(注释:1)所有行,command1执行替换成功的行,不会先跳到标签:a处去执行command3,而是先执行command2,碰到b,跳到脚本末尾,如果不加b,会继续执行command3;
           2)执行command2失败的行,则会跳转到标签a处执行command3,不会执行command2.) 

(默认没有替换就是替换失败)

8.
[localhost]# echo -e "123/n456/n789"|sed '/123/{s##& ok#;ba};s#.*#& xxoo#;b;:a;a/###'     (ba)
123 ok
###
456 xxoo
789 xxoo

分析:{command1;ba};{command2};b;:a;{command3}

(注释:1)匹配到/123/的行,command1执行完毕后,跳转到标签a处执行command3,然后结束;
          2)其他行则执行command2,碰到b,跳到脚本末尾,如果不加b,会继续执行command3;)


9.
[localhost]# echo -e "123/n456/n789"|sed '/123/s##& ok#;ba;s#.*#& xxoo#;b;:a;a/###'        (ba)
123 ok
###
456
###
789
###

分析:{command1}:ba;{command2}:b;:a;{command3}

(注释:所有行,command1替换成功或者失败的行,都会跳转到command3,然后结束,command2不会执行.)

(注意是替换失败,不是匹配失败)
(默认没有替换就是替换失败)

欢迎各位大牛指点教育, 转载请注明:https://my.oschina.net/u/3101193/blog/859642

广告 广告

评论区