6.sed高级子命令

来源:互联网 发布:array python 编辑:程序博客网 时间:2024/05/16 12:14
高级子命令


n 读入下一行到模式空间。
例: '4{n;d}'   4 定址,n 表示把第五行读入模式空间 d 表示删除第五行。


N 追加下一行到模式空间,即当前行和下一行同时应用后面的命令。


P 输出多行模式空间的第一部分(第一行),在执行完最后一个命令后,模式空间内容自动输出。P经常出现在N之后和D之前。


D 删除模式空间中的第一行内容,与d不同,D不会导致读入新的行。而是重新开始执行脚本的第一个命令。


这三个命令能建立一个输入、输出循环,用来维护两行模式空间,但是一个只输出一行。


实例:

sed 'N;$!P;D' a.txt  删除文件倒数第二行



分析:
1.读入第一行,N 追加第二行到第一行后面,$!P 输出第一行,D 删除模式空间中的第一行,并且重新执行脚本命令。
2.N 追加第三行到第二行后面(目前模式空间中为第二行和第三行),$!P 输出第二行,D 删除第二行,从头执行脚本命令。
3.N 追加第四行到第三行后面(目前模式空间为第三行和第四行), $!P 不执行,D删除第三行,从头执行脚本命令。
4.因为文本中没有内容,脚本不执行,直接输出模式空间中的内容:第四行。
0 0
原创粉丝点击