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