• sed命令修改文本内容,可在脚本中使用


      在写Shell脚本的时候,有时候要替换、删除某个文件中的内容,但是又不方便用vim做交互的动作,这就可以用到『sed』命令来做批量的替换、插入、删除。

    1、用法

    sed [options] 'command' file(s)
     
    # -f 将sed命令内容写在一个文件中,执行命令
    sed -f scriptfile file(s)  
     
    # -i 直接对文件原地修改
    sed -i 'command' file(s) #// 默认sed只是通过内存临时修改文件,源文件无影响,加-i就会修改源文件,源文件内容会改变

    2、常用选项(options):

      -n∶使用安静(silent)模式。默认sed会输出读取文档的全部内容。但如果加上 -n 参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。
      -e∶多点编辑 让一条sed可以执行多条指令
      -f∶直接将 sed 的动作写在一个脚本文件内, -f filename 则可以执行 filename 内的sed动作;
      -r∶让sed支持扩展正则 若与其它选项一起使用,应放作为首选项
      -i∶直接修改读取的档案内容,而不是由屏幕输出。

    3、常用命令(command):

      a∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
      c∶替换, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行!
      d∶删除,因为是删除,所以 d后面通常不接任何内容
      i∶插入, i的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
      p∶打印,就是将某个选择的资料显示。通常 p 会与参数 sed-n 一起运作
      s∶替换,可以直接进行替换!通常这个 s的动作可以搭配正则表达式。

    4、部分示例:

      ①显示文件中的指定内容

        

       ②关键字模式查询

        

      ③删除文件中的内容

        

       ④对行进行插入

        

       ⑤对行进行替换

        

       ⑥对行模式匹配替换

        

         注意:如果内容遇到/等特殊字符,那么sed里用到的/可以用冒号:或者#或者&代替

        

        示例中把my.storageRoot=/storage 修改成 my.storageRoot=/home/storage。

      ⑦保存修改文件

         

        在Mac上执行上面有些命令可能会报错误,原因是mac强制要求备份,否则报错

        解决方案,留一个空备份'':

        

  • 相关阅读:
    git 命令行下浏览器tig使用记录
    根据进程名字杀死进程
    centos7 在线安装postgresql9.5
    HttpClient使用代理访问
    nmap查看服务器端口使用情况
    java后台启动jar包
    不同语言,系统通过共享内存方式实现信息交互
    释放 MappedByteBuffer映射的内存
    Java使用ByteBuffer读取大文件
    Java共享内存
  • 原文地址:https://www.cnblogs.com/xingboy/p/16338117.html
Copyright © 2020-2023  润新知