sed学习笔记-3(命令DPhHgGxb
短信预约 -IT技能 免费直播动态提醒
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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341