Linux sed

注意:所有匹配需要用单引号

一、获取最后一行内容

docker images | grep "none" | sed -n '$'p

二、获取第一行内容

docker images | grep "none" | sed -n '1'p

三、获取第一行到最后一行内容

docker images | grep "none" | sed -n '1,$'p

四、替换操作: s命令

    sed 's/book/books/' file

五、全面替换标记g

    sed -i 's/book/books/g' file

六、定界符

  1、以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:

      sed 's:test:TEXT:g' file

      sed 's|test|TEXT|g' file

     2、定界符出现在样式内部时,需要进行转义。

        sed 's/\/bin/\/usr\/local\/bin/g'

七、删除操作:d命令

  1、删除空白行:

      sed '/^$/d' file

  2、删除文件的第2行:

      sed '2d' file

  3、删除文件的第2行到末尾所有行:

      sed '2,$d' file

  4、删除文件最后一行:

      sed '$d' file

  5、删除文件中所有开头是test的行:

      sed '/^test/'d file

八、已匹配字符串标记&

  1、正则表达式 \w\+ 匹配每一个单词,使用 [&] 替换它,& 对应于之前所匹配到的单词:

      echo this is a test line | sed 's/\w\+/[&]/g'

      [this] [is] [a] [test] [line]

  2、所有以192.168.0.1开头的行都会被替换成它自已加localhost:

      sed 's/^192.168.0.1/&localhost/' file

      192.168.0.1localhost

九、子串匹配标记\1

  1、匹配给定样式的其中一部分:

      echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'

      this is 7 in a number

  2、命令中 digit 7,被替换成了 7。样式匹配到的子串是 7,\(..\) 用于匹配子串,对于匹配到的第一个子串就标记为 \1,依此类推匹配到的第二个结果就是 \2,例如:

      echo aaa BBB | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'

      BBB aaa

  3、love被标记为1,所有loveable会被替换成lovers,并打印出来:

      sed -n 's/\(love\)able/\1rs/p' file

posted @ 2018-07-19 18:09  Presley  阅读(164)  评论(0编辑  收藏  举报