Skip to content

SED和GSED中N命令的不同

SED中的N命令的作用:
从输入文件中读入下一行,并附加到模式空间中,然后接着执行下面的SED命令。如果N碰到最后一行,则直接退出,不再执行后面的脚本。
传统的SED中,N命令遇到最后一行的话,SED直接退出,不输出最后那一行(模式空间中的内容),而GSED则输出。如果不是最后一行的话,则SED/GSED行为相同

用于测试的三行文本:

┌[acheng@vanilla]-(~)
└> echo -e "test\necho\ntext"
test
echo
text

当”echo”在最后一行时,sed直接退出,没有输出”echo”:

┌[acheng@vanilla]-(~)
└> echo -e "test\necho" | sed '/^echo/ {N;}'
test

同样的情况,gsed则输出(OpenBSD上gsed需要另外安装。Linux上的sed和gsed多是一回事):

┌[acheng@vanilla]-(~)
└> echo -e "test\necho" | gsed '/^echo/ {N;}'
test
echo

当”echo”不为最后一行时,sed和gsed的输出相同:

┌[acheng@vanilla]-(~)
└> echo -e "test\necho\ntext" | sed '/^echo/ {N;}'
test
echo
text

 

Avatar

专业Linux/Unix/Windows系统管理员,开源技术爱好者。对操作系统底层技术,TCP/IP协议栈以及信息系统安全有强烈兴趣。电脑技术之外,则喜欢书法,古典诗词,数码摄影和背包行。

Sidebar