zoukankan      html  css  js  c++  java
  • Sed基础

    Sed(Stream EDitor):流编辑器

    工作原理:

      将文件中的文本逐行取出,在内存中处理,而不是在源文件中处理;sed的加工车间有两个:pattern space和hold space;sed会根据给定的pattern去匹配每行文本,不管匹配成功或失败,默认都会将pattern space中的内容输出至标准输出,如果匹配成功再执行用户给定的编辑命令。

    命令格式:

      sed [OPTIONS] ... 'script' file...

      其中script是地址定界编辑命令的整体

      常用OPTIONS:

        -n:不输出pattern space中的内容至标准输出

        -e script,--expression=script:多点编辑

    /*示例*/
    sed  -e '/^[A]/p' -e '/^[A]/d' test.txt

        -f /PATH/TO/SOME/SED_SCRIPT_FILE:每行一个编辑命令

        -r:支持使用扩展正则表达式(不加则使用基本正则表达式)

        -i[SUFFIX],--in-place[=SUFFIX]:直接编辑源文件

    /*示例*/
    sed -i '/^[h]/d' test.txt

      地址定界:

        (1)空地址[什么也不写]:匹配全文

        (2)单地址:

          #:指定行

          /pattern/:被模式匹配到的每一行

    /*示例*/
    sed -n '2p' test.txt

        (3)地址范围:

          #,#:第#行到第#行,如1,5

          #,+#:如1,+2,从第一行开始,到第三行

          #,/pattern/:从#行到被pattern匹配到的行之间的行

          /pattern1/,/pattern2/

          $:最后一行

        (4)步进:~

          1~2:所有奇数行

          2~2:所有偶数行

      编辑命令:    

        d:删除模式空间(pettern space)中的内容

        p:显示模式空间中的内容

        a est:在行后面追加文本‘test’,支持使用 实现多行追加

        i est:在行前面插入文本‘test’,支持使用 实现多行插入

        c est:把匹配到的行替换为此处指定的test

        w /PATH/TO/SOMEFILE:保存模式空间中匹配到的行至指定文件中

        r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行之后,实现文件合并

        =:为模式匹配到的行打印上行号

        :条件取反,格式为:地址定界!编辑命令

        s///:查找替换,其分隔符可自行定义,常用有s###,s@@@等;

          替换标记:

            g:全局替换

            w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中

            p:显示替换成功的行;

    /*示例*/
    echo "/var/log/message" | sed 's@[^/]+/?$@@'

      高级编辑命令

        h:把模式空间中的内容覆盖至hold space(保持空间)中

        H:把模式空间中的内容追加至hold space(保持空间)中

        g:把保持空间中的内容覆盖至模式空间中

        G:把保存空间中的内容追加至模式空间中

        x:把两个空间中的内容互换;

        n:覆盖读取匹配到的行的下一行至模式空间中;

        N:追加读取匹配到的行的下一行至模式空间中;

        d:删除模式空间中的行;

        D:删除多行模式空间中的所有行;

  • 相关阅读:
    DNS服务器出错造成“不知道这样的主机”
    downadup.B蠕虫病毒处理手记
    今天新接触到一个名词——GSV
    客户端获取SQL服务端的MAC
    关于SQL事务的测试
    ftp://ftp.microsoft.com
    AJAX.DLL的使用
    "界面规则层与业务规则层"让我想开了
    客户端cookie也会传到服务端的Request.Params?
    Ext.Fx
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/6358331.html
Copyright © 2011-2022 走看看