美文网首页sed
Linux流编辑命令sed

Linux流编辑命令sed

作者: 会飞的蜗牛07 | 来源:发表于2019-01-11 00:04 被阅读2次

    参数介绍

    -n - 只打印经过sed特殊处理的那一行(或者动作);
    -e - 直接在命令列模式上进行sed的动作编辑;
    -f filename - 直接运行filename内的sed动作;
    -r - 支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
    -i - 直接修改读取的文件内容,而不是输出到终端;

    function:
    a - 下一行插入,a后面接字串,这些字串会在新的一行出现(目前的下一行);
    i - 下一行插入,i后面接字串,这些字串会在新的一行出现(目前的上一行);
    c - 取代,c的后面可以接字串,这些字串可以取代n1,n2之间的行!
    d - 删除;
    p - 打印,通常会与参数sed -n一起运行;
    s - 替换,例如1,20s/old/new/g就是将1-20行中所有的old替换为new;

    实例

    指定行号操作

    sed -n '1,3p' file # 指定行号打印
    sed -i '3d' file # 指定行号删除
    sed -i '2a ni hao' file # 指定行号后面增加
    sed -i '2i ni hao' file # 指定行号前面增加
    

    根据行内容操作

    sed -n '/^5/ p' file # 匹配行内容打印,支持正则
    sed -i '/^5/ d' file # 匹配行内容删除
    sed -i '/开始标志/,/结束标志/{//!d}' file # 删除匹配行之间的内容
    sed -i '/开始标志/,/结束标志/{//d}' file # 删除匹配行
    sed -i '/开始标志/,/结束标志/d' file # 删除匹配行和匹配行之间的内容
    sed -i '1,20s/待替换的字符串/替换字符串/g' file # 匹配行内容替换,可以指定行号范围
    sed -i -e 's%^xxx.*%xxx=ddd%g' filename # 对file中的变量进行赋值
    ​sed '^xxx=/!d;s/.*=//' filename # 获取file中变量的赋值
    find . -name test.txt | xargs sed -i '$a\zzzzzz'​ # 在test.txt的最后一行添加字符串
    
    

    命令行中含变量

    sed -i "\$a$变量" file # 在file后面增加变量的内容​,当不是变量时,不需要最前面的\
    

    使用-f参数

    cat make_boot.log | sed -f del_make.sed > make_boot.log.1
    

    sed脚本del_make.sed的内容为

    /GNU Make 3.81/,/PARTICULAR PURPOSE./d # 删除固定格式的内容
    /This program built for x86_64-redhat-linux-gnu/d
    /Updating goal targets..../d
    /makefiles...$/d
    

    相关文章

      网友评论

        本文标题:Linux流编辑命令sed

        本文链接:https://www.haomeiwen.com/subject/bdxtdqtx.html