博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux:sed高级命令之n、N(转)
阅读量:6087 次
发布时间:2019-06-20

本文共 768 字,大约阅读时间需要 2 分钟。

 

sed的语法格式:

sed [option] {sed-command} {input-file}

sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,知道脚本执行完毕。然后该行呗输出,模式(pattern space)被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。

但是,由于种种原因,如用户希望在某个条件下,脚本中的某个命令被执行或希望模式空间(pattern space)保留,以便下一次使用,这都有可能使sed在处理文件的时候,不按照正常的流程来进行处理,这时候就需要用sed高级命令来满足需求。

 

先来说说命令n和命令N

命令n:读取下一行到pattern space。由于pattern space中有按照正常流程读取的内容,使用n命令后,pattern space中又有了一行,此时,pattern space中有2行内容,但是先读取的那一行不会被取代、覆盖或删除;当n命令后,还有其他命令p的时候,此时打印出的结果是n命令读取的那一行的内容。

看下图,你就明白了。

新建文件,其内容如下

cat 1.txt

1

2

正常sed流程

使用n命令后,

N命令:将下一行添加到pattern space中。将当前读入行和用N命令添加的下一行看成“一行”。

新建文件1.txt

cat 1.txt

1

2

正常sed流程

使用N命令后

参考:

《sed and awk 第二版》

 

http://www.cnblogs.com/fhefh/archive/2011/11/14/2248942.html

 

转载于:https://www.cnblogs.com/softidea/p/4238751.html

你可能感兴趣的文章
Winform文件下载之断点续传
查看>>
TCP三次握手
查看>>
ABP理论学习之Web API控制器(新增)
查看>>
栈的应用之判断括号匹配
查看>>
让工具类不可实例化
查看>>
EntityFramework Core 1.1是如何创建DbContext实例的呢?
查看>>
iOS开发-NSPredicate
查看>>
MVC模式与struts框架
查看>>
Linux系统的中断、系统调用和调度概述【转】
查看>>
人月神话-人月:项目滞后的原因分析
查看>>
linux驱动学习(二) Makefile高级【转】
查看>>
通过QC远程运行QTP脚本,QTP自动崩溃关闭的解决方法
查看>>
WinServer2012 R2忘记密码的解决方案+远程连接另一种莫名其妙故障
查看>>
linux的mtd架构分析【转】
查看>>
字符串反转问题
查看>>
KMP
查看>>
Mysql占用过高CPU时的优化手段
查看>>
android 布局文件 ScrollView 中的 listView item 显示不全解决方案
查看>>
怎么清理win7、win8更新垃圾(winsxs目录清理)
查看>>
windows平台下编辑的内容传到linux平台出现中文乱码的解决办法
查看>>