- 论坛徽章:
- 0
|
本帖最后由 xiaopan3322 于 2011-05-02 12:30 编辑
N:Add a newline to the pattern space, then append the next line of input to the pattern space. If there is no more input then sed exits without processing any more commands. (追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。如果没有下一个可处理的行,则退出)
N的作用其实是很神奇的:
一方面能够创建多行模式空间,而这时候的多行模式空间之间的\n是隐藏的,即经过N处理过的输出和原来并没有区别,但是sed在读取的时候是以追加的方式:
举个例子:
$ cat file
1
2
3
4
file文件中的每一行后面都有一个隐藏的换行符”\n”,sed不对每行末尾的”\n”进行处理。
$ sed N file
1
2
3
4
经过N处理过的输出和原文件没有区别,但本质是不一样的。这里sed其实认为自己打印的是2行,第一行为”1\n2”,而第2行为”3\n4”,注意这里的2行末尾依然隐藏换行符”\n”,sed依然不处理行尾的”\n”,但是处理行内的”\n”。因为这里默认的动作是打印,所以处理行内的”\n”我们也看不出来。
值得注意的是,处理1时,2被读入并追加到1后面,所以1处理完后不再读入2(前面已经读过了)而直接读入3进行下一个N命令(即读入4并追加到3后面)。
另一方面, N命令在没有下一行可读取的时候,会有退出的作用,关于这个,我觉得可以参看这个:
http://bbs2.chinaunix.net/thread-2312480-1-2.html |
|