• sed命令使用详解


        内容来自马哥视频,感谢马哥精彩讲解



    sed:编辑器

    sed: Stream EDitor, 行编辑器,逐行进行处理

    grep:实现文本过滤

    awk:文本报告生成器

    sed默认不编辑源文件,而是每次从源文件读取一行出来,在sed的编辑内存缓冲空间中(即模式空间中)进行编辑,编辑完成后将结果打印至屏幕上。


    用法:

    sed [option]... 'script' inputfile...

    script:'地址命令'


    常用选项:

    -n:静默模式,不输出模式中的内容至屏幕;

    -e: 多点编辑,在一个sed命令中实现多个编辑操作;

    -f /PATH/TO/SCRIPT_FILE: 从指定文件中读取编辑脚本;

    -r:支持使用扩展正则表达式;

    -i: 原处编辑;


    地址定界:

    (1) 不给地址(范围):对全文进行处理;

    (2) 单地址:

    • #:指定的行;
    • /pattern/:被此处模式所能够匹配到的每一行;

    (3) 地址范围:

    • #,#:从第几行开始到第几行结束
    • #,+#:从第几行开始,往下加几行
    • /pat1/,/pat2/:从匹配的行开始,到第二次被pat2匹配的行结束
    • #,/pat1/:从第几行开始到第一次被模式匹配的行结束

    (4) ~:步进

    • 1~2:从第一行开始,步进为2,读所有奇数行
    • 2~2:从第二行开始,步进为2,读所有偶数行

     


    编辑命令:

    d:删除

    p:显示模式空间中的内容,需要和地址定界一起使用,仅打印在模式空间匹配到的内容

    a ext:在行后面追加文本;支持使用 实现多行追加;

    i ext:在行前面插入文本;支持使用 实现多行插入;

    c ext:(change)替换行为单行或多行文本;

    w /path/to/somefile:保存模式空间匹配到的行至指定文件中;

    r /path/from/somefile:读取指定文件的文本流至模式空间中匹配到的行的行后;

    =:为模式空间中的行打印行号;

    !:取反条件;

    s///:支持使用其它分隔符,s@@@,s###;

    替换标记:

    • g: 行内全局替换;
    • p:显示替换成功的行
    • w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中


    练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符;

    # sed 's@^[[:space:]]+@@' /etc/grub2.cfg

    练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符;

    # sed 's@^#[[:space:]]+@@' /etc/fstab

    练习3:echo一个绝对路径给sed命令,取出其基名;取出其目录名;

     # echo "/etc/sysconfig/" | sed 's@[^/]+/?$@@'


    高级编辑命令:

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

    H:把模式空间中的内容追加至保持空间中;

    g:从保持空间取出数据覆盖至模式空间;

    G:从保持空间取出内容追加至模式空间;

    x:把模式空间中的内容与保持空间中的内容进行互换;

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

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

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

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

    sed -n 'n;p' FILE:显示偶数行,读取第一行,第一行被某个模式匹配到了,立即读取下一行到模式空间中,这时模式空间就是第二行,使用p命令打印出来,然后读第三行。。。

    sed '1!G;h;$!d' FILE:逆向显示文件内容,1!表示第一行除外,

    sed '$!N;$!D' FILE: 取出文件后两行;

    sed '$!d' FILE:取出文件最后一行;

    sed 'G' FILE:  在每一行后面加空白行

    sed 'g' FILE:  把每一行替换为空白行

    sed '/^$/d;G' FILE: 如果行内容后面有多个空白行,则合并成一个

    sed 'n;d' FILE: 显示奇数行;

    sed -n '1!G;h;$p' FILE: 逆向显示文件中的每一行;

  • 相关阅读:
    【CF833E】Caramel Clouds
    【LG2183】[国家集训队]礼物
    (ex)Lucas总结
    【CF527C】Glass Carving
    【CF833D】Red-Black Cobweb
    【LG4631】[APIO2018]Circle selection 选圆圈
    volatile梳理
    ThreadLocal梳理
    java线程基础梳理
    TCP/IP
  • 原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/9418747.html
Copyright © 2020-2023  润新知