Sed 用法

匿名 (未验证) 提交于 2019-12-02 23:45:01

sed

  常用选项

    -n:不输出模式空间中的内容至屏幕

    -e:多点编辑(可以多个命令进行)

    -f:每行一个编辑命令

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

    -i:直接编辑原文件

  地址定界

    1、空地址:对全文进行处理

    2、单地址:

      #:指定行

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

    3、地址范围

      #,#:

      #,+#:

      #,/pat1/

      /pat1/,/pat2/

    4、步进:~

      1~2:所有的奇数行

      2~2:所有偶数行

  编辑命令:

    d:删除

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

    a \text:在行后面追加文本,支持使用\n实现多行追加

    i \text:在行前面插入文本,支持使用\n实现多行插入

    c \text:把匹配到的行替换为此处指定的文本

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

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

    =:为模式匹配到的行打印行号(sed '/^UUID/=' /etc/fstab)

    !:条件取反(sed '/^#/!d' /etc/fstab)

    s///:查找替换,分隔符可自行指定

      替换标记:

        g:全局替换

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

        p:显示替换成功的行

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

  sed 's/^[[:space:]]\+//g' /boot/grub2/grub.cfg

练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符

  sed 's/^#[[:space:]]*//g' /etc/fstab

练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname

  echo "/var/log/messages" | sed 's/[^/]\+$//'

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!