zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    mybatis 中的稍微复杂些的sql语句
    Why doesn't Genymotion run on Windows 10?
    java.lang.NoSuchMethodError: 属于jar包冲突
    sqlserver修改某列为行号
    手机App开发
    java连接SQLserver
    svn忽略target
    JaxWsDynamicClientFactory弃用了,改成org.codehaus.xfire.client;
    FileDataSource java的文件操作
    解决Navicat无法连接Oracle的问题
  • 原文地址:https://www.cnblogs.com/softidea/p/4238751.html
Copyright © 2011-2022 走看看