发布时间:2019-07-31 09:40:57编辑:auto阅读(1667)
0606: 多行删除 d删除模式空间内容,导致读入新行 D删除模式空间第一行(直到第一个被嵌入的换行符)重点:它不会读入新行,相反它返回到脚本的顶端,将这些指令应用于模式空间剩余的内容! P打印模式空间的第一行,用法见sed学习笔记-2的多行模式替换 例:保留一个空行 [root@localhost upload]# cat 1 a b c d e [root@localhost upload]# cat 1.sed /^$/ { N /^\n$/D } [root@localhost upload]# sed -f 1.sed 1 a b c d e 保持空间: h复制模式空间内容到保持空间 覆盖 H复制模式空间内容到保持空间 追加 g复制保持空间内容到模式空间 覆盖 G复制保持空间内容到模式空间 追加 x交换两个空间的内容 例1: [root@localhost upload]# cat 1 aaaaaaaaaaa bbbbbbbbbbbbb cccccccccccc dddddddddddddd eeeeeeeeeeeeee ffffffffffff [root@localhost upload]# cat 1.sed #本脚本中对于空行的操作一定要在脚本的顶部 $ { /^$/! { H s/.*// } } /^$/! { H d } /^$/ { x s/^\n/<p>/ s/$/<\/p>/ } [root@localhost upload]# sed -f 1.sed 1 <p>aaaaaaaaaaa bbbbbbbbbbbbb cccccccccccc</p> <p>dddddddddddddd eeeeeeeeeeeeee</p> <p>ffffffffffff</p> -------------------------------------------------------------------- 流程控制命令: b 1、"b<空格>标签" 跳转到指定标签下的语句(冒号开头的标签) 2、"b不代标签参数" 跳转到脚本结尾(不执行脚本剩下语句) t 1、"t<空格>标签"如果上一个语句成功执行,则执行指定标签下的语句 2、"t不代标签参数" 跳转到文件结尾(不执行脚本剩下语句) 例:随便一个过程 :begin s/a/A/ /a/b begin /B/ t end b :end D
-------------
n和N不打使执行权限回到顶部,而是只是单纯的读取下一行、追加下一行到当前的模式空间,从下一个命令接着处理。
2.txt
[root@centos-6 bak]# sed -f 2.sed -n 2.txt ccc aaaa cccc aaac
N
[root@centos-6 bak]# cat 2.sed #!/bin/sed -f /c/ { s/a/A/g :notfindpath N p }
n
[root@centos-6 bak]# sed -f 2.sed -n 2.txt aaaa aaac
上一篇: 通过python爬取数据
下一篇: Python-面向对象编程
47490
45792
36789
34321
28958
25594
24441
19608
19109
17630
5463°
6046°
5568°
5636°
6571°
5374°
5375°
5882°
5853°
7167°