您好,欢迎来到外链网!
当前位置:外链网 » 站长资讯 » 专业问答 » 文章详细 订阅RssFeed

Linux认证辅导:高级Sed命令---N(linux 认证)

来源:互联网 浏览:115次 时间:2023-04-08

N(Next)  追加下一行

通过读取新的输入行,并将它添加到模式空间的现有内容之后来创建多行模式空间

模式空间最初的内容和新的输入行用换行符(\n)分隔

在模式空间中,元字符“^”只匹配模式空间中的第一个元字符,而不匹配换行符后买呢的字符

同样“$”只匹配模式空间中最后的换行符

next 输出模式空间的内容,然后读取新的输入行,不会创建多行模式空间

举例:

[root@www.downzz.com /home/sysadmin/zhaoyj]# cat test.txt
AAA Operator
Guide BBB

[root@www.downzz.com /home/sysadmin/zhaoyj]# sed '/Operator$/{
N
s/AAA Operator\nGuide/Aniya/
}' test.txt
Aniya BBB

如果这么写的话,看看有何变化

[root@www.downzz.com /home/sysadmin/zhaoyj]# sed '/Operator$/{
N
s/AAA Operator\nGuide/Aniya\

/
}' test.txt
Aniya

BBB

原因是我们不能使用\n在替换字符中插入换行符,必须使用反斜杠转义换行符

看看这个错误的换行方法:

[root@www.downzz.com /home/sysadmin/zhaoyj]# sed '/Operator$/{
N
s/AAA Operator\nGuide/Aniya\n/
}' test.txt

AniyanBBB

[root@www.downzz.com /home/sysadmin/zhaoyj]# cat test.txt
1111
2222
3333
4444

合并上下两行

[root@www.downzz.com /home/sysadmin/zhaoyj]# sed '$!N;s/\n/   /' test.txt
1111   2222
3333   4444

合并匹配模式与它的下一行

[root@www.downzz.com /home/sysadmin/zhaoyj]# sed '/2/{
N
s/\n/   /
}'  test.txt
1111
2222   3333
4444

合并所有行
[root@www.downzz.com /home/sysadmin/zhaoyj]# sed ':a;N;s/\n/\t/;ba;' test1
1    2    3    4

本文从互联网转载,来源地址:www.downzz.com/shell/17425.html,原作者保留一切权利,若侵权或引用不当,请联系茶猫云(cmy.cn)删除。【茶猫云,优质云服务器提供商】