Sed 用法

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/[^/]\+$//'

猜你喜欢

转载自www.cnblogs.com/P-Z-W/p/11075022.html