linux:sed高级命令之n、N(转)

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

时间: 2024-07-31 20:21:34

linux:sed高级命令之n、N(转)的相关文章

sed高级命令小记

sed高级命令: g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容被覆盖 G:将hold space中的内容append到pattern space\n后 h: 将pattern space中的内容拷贝到hold space中,原来hold space里的内容被覆盖 H: 将pattern space中的内容append到hold space\n后 d: 删除pattern中的所有行,并读入下一新行到pattern中 [[email 

Linux网卡高级命令、IP别名及多网卡绑定 转

http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100065.html 本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲解了Linux系统下的网络环境配置等知识,我们了解了一些关于网络配置的一些基本命令.在这里将补充一些Linux系统下有关网卡的一些高级命令. ①mii-to

sed高级命令

所谓高级,主要是指这里将要提到的命令都能改变sed执行或者控制的流程顺序(sed通常都是一行被读入模式空间,并用脚本中的sed命令一个接一个的应用于那一行). 高级sed命令分成3个组: 1)处理多行模式空间(N.D.P). 2)采用保持空间来保存模式空间的内容并使他们可用于后续的命令(H.h.G.g.x). 3)编写使用分支和条件指令的脚本来更改控制流(:.b.t). 1.N命令:追加下一行 多行Next(N)命令通过读取当前行的下一行,并把两行拼成一行来进行接下来的处理. [email pr

sed高级命令及模式空间和交换空间简介

高级命令 之前我们用到的sed命令都是一行一行的进行处理文本的,不过有些时候单行处理可能并不能满足我们的需要,所以sed还提供了多行模式,多行模式的命令主要有NPD这三个,N:读取匹配到的行的下一行追加至模式空间P:打印模式空间开端至\n内容,并追加到默认输出之前D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本, 并不会读取新的输入行,而使用合成的模式空间重新启动循环.如果模式空间 不包含换行符,则会像发出d命令那样启动正常的新循环首先还是先看一下N命令的大致流程图,P和D命

字符及文本处理之sed:sed使用高级命令

三.sed高级编辑命令      t,T,D,P,n,N,H,h,g,G 前面的基本用法已经可以满足基本应用,但sed还有一些高级用法(装X利器),要学习sed高级命令首先要理解清楚sed的另一个缓冲区"保持空间". 前面基本用法中也有提到模式空间,即为处理文件中一行内容的一个临时缓冲区.处理完一行之后就会把模式空间中的内容打印到标准输出,然后自动清空缓存. 而这里说的保持空间是sed中的另外一个缓冲区,此缓冲区正如其名,不会自动清空,但也不会主动把此缓冲区中的内容打印到标准输出中.而

linux高级高级命令

一.Linux的高级命令: cat:查看文件的全部内 head查看文件的前10行的内容,还可以通过参数来显示,指定的前指定参数的行 tail:查看文件的后10行内容,还可以加参数来进行显示指定的行数 more:分页显示,如果是按的回车键,则一行一行的显示,如果是空格键时,则是分页显示, 二.基本命令: 1. |:表示的是:前的输出是后面的输入 2.find:递归显示指定文件夹下的文件夹和文件 3.grep  :抓取 4.grep   'toms'   bbb:在文件bbb 抓取含有toms 的行

linux之文件的高级命令

在我们日常系统运维中,经常需要利用shell写一些自动化脚本,这些脚本写的好坏很大程度上取决于linux的高级操作命令掌握的是否熟练,那么我们看看工作中使用频率最高的一些命令. cat -n a.txt  给输入的文本编号 cat a.sh cat > /etc/yum.repos.d/test.repo <<ok[yumtest]name=my homebaseurl=file:///yumtest/enabled=1gpgcheck=0ok ./a.sh  --->配置yum

linux sed命令详解

Linux环境:Ubuntu16.04 sed命令 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html http://blog.csdn.net/yiqingnian28/article/details/23133043 正则表达式 http://blog.csdn.net/wzzfeitian/article/details/8842371 sed -help 查看sed的用法 -n, --quiet, --sile

理解linux sed命令

理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反