zoukankan      html  css  js  c++  java
  • sed -i 命令常用方法总结

    sed用法

    Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

    -i[SUFFIX]
    edit files in place (makes backup if SUFFIX supplied)

    1,删除指定行:

    sed -i 'Nd' filename 【N 为行数】
    
    特别的,删除最后一行为:
    sed -i '$d' filename 【$ 代表的是最后一行】
    
    【提示】:
    cat -n filename //可以从1开始输出显示行号
    grep -n "指定行内容" filename //显示指定行行号

    2,插入到某行

    ①知道该行行号
    sed -i 'Ni 要添加内容' filename //第N行插入要添加的内容,原来该行的内容后移
    
    ②知道该行内容:
    插入到某行上面
    sed -i '/定位字符串/i 插入字符串' filename
    
    插入到某行下面
    sed -i '/定位字符串/a 插入字符串' filename
    
    补充,文末增加一行可使用如下语句:
    echo "
    插入字符串" >> filename

    3,替换某字符串

    ①知道该行行号
    sed -i 'Nc 替换内容' filename //替换第N行内容
    
    ②知道该行内容
    sed -i 's/原字符串/替换字符串/' filename
    sed -i 's/原字符串/替换字符串/g' filename 
    
    说明:
    s///: 从每一行的行首开始,匹配到第一个符合的字段,就会跳到下一行(同一行中可能有多个匹配字段)
    s///g:表示全局替换,匹配每一行从行首到行尾的所有字符

    4,替换字符串中部分内容,其实是3的升华用法

    sed -i 's/^(字符串段1).*(字符串段2)$/1放入替换段1与段2之间的内容2/' filename

    解读:
    ^是正则表达式匹配字符串开始位置
    $是正则表达式匹配字符串结束位置
    1引用了第一个()匹配到的内容
    2引用了第二个()匹配到的内容
    .*为两对括号中间的所有内容

    5,指定行添加删除注释

    添加注释
    加【#】:
    sed -i 's/^指定行字符串/#&/g' filename
    加【//】:
    sed -i 's/^指定行字符串///&/g' filename (//由于有特殊含义,前面加去掉特殊含义)
    
    举例:
     > on property:sys.boot_completed=1
     >     start gps_upgrade
     > root:/vendor/etc/init/hw # sed -i 's/^.*start gps.*/#&/' init.tmp.rc (字符串不一定要写完整行,能唯一标识这一行即可。符合条件的字符串会全部都被添加上注释)
     > root:/vendor/etc/init/hw # 
     > root:/vendor/etc/init/hw # cat init.tmp.rc
     > on property:sys.boot_completed=1
     > #    start gps_upgrade 
    
    删除注释
    sed -i 's/^#(指定行字符串)/1/g' filename

  • 相关阅读:
    「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组
    python写一个通讯录
    Git学习笔记
    交换排序
    用Windows自带的方法创建WiFi
    MySQL之触发器
    插入排序
    range和arange的区别
    Spring前后端跨域请求设置
    三、图的定义及遍历
  • 原文地址:https://www.cnblogs.com/pmboat/p/13036478.html
Copyright © 2011-2022 走看看