31°

0409 第十二次课:sed

sed命令

一、sed命令

  • sed简介

    sed命令主要用于删除、查找替换

  • sed的用法:

    sed命令模式:sed [option] 'sed命令' filename
    
    sed脚本模式:sed [option] 'sed script' filename
    
  • sed选项:

    -n:只打印匹配到行

    -e:直接在命令行进行编辑,此为默认的选项

    -f: 执行指定脚本中的script语句

    -i:直接修改文件中的内容

  • sed动作说明

    a:a的后面可以是字符串,这些字符串会新增到下一行(目前的下一行)

    c:取代,c的后面可以是字符串,这些字符串可以取代n1,n2之间的行

    d:删除

    i:插入,i的后面可以是字符串,这些字符串会在新的一行出现(目前的上一行)

    p:打印,通常p和 -n一起使用

    s:替换,进行替换,通常s是搭配正则,例如:s/oo/tt/g(把oo替换为tt)

  • 示例:

    1、使用sed进行匹配

    sed -n '/root/'p passwd

    2、sed不区分大小写匹配

    sed -n '/root/'Ip passwd

    3、删除1-30(并不会操作文件)

    sed '1,30'd passwd |wc -l

    4、把第1-5行替换为“111”

    sed '1,5'c'111' passwd

    5、指定行数替换

    sed '1,10s/oo/xx/g' passwd

    6、全局替换

    sed '$s/oo/xx/g' passwd

    7、把passwd文本以:分割,把第一段和最后一段进行替换

    以第一行为例:

    sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' passwd |head -n 1

    解释:

    -r :使用扩展正则。可以不使用脱意符

    /([^:]+):(.*):([^:]+)/ 以“:”分割为三段。

    第一段([^:]+):,不以:开头,以:结尾,“+”表示一个或多个字符。对应的输出结果就是:

    第二段(.): (.)贪婪匹配,以“:”结尾。对应的输出结果是:

    第三段([^:]+) 不以“:”开头,“+”表示一个或多个字符。对应的输出结果就是:

    \1表示第一个()内容,\2表示第二个()内容,\3表示第三个内容

    最终的输出结果:

    8、在某行插入字符

    在第三行插入‘333’

    sed ‘3’i‘333’

本文由【w】发布于开源中国,原文链接:https://my.oschina.net/u/3755326/blog/3033746

全部评论: 0

    我有话说: