美文网首页
shell常用命令之替换文件内容

shell常用命令之替换文件内容

作者: 张亚伦 | 来源:发表于2024-04-09 17:33 被阅读0次

    实现功能:使用脚本命令替换docker-compose.yaml文件中cpus和memory对应的参数值

    文件部分内容如下:

    deploy:
          resources:
            limits:
              cpus: '0.6'
              memory: 1048576000B
            reservations:
               cpus: '0.6'
               memory: 1048576000B
    
    

    实现方式如下:

    • sed方式(推荐)
    #实现cpus内容的替换
    sed -i 's/cpus: '\''0.6'\''/cpus: '\''0.5'\''/g' docker-compose.yaml
    #实现memory内容的替换
    sed -i 's/memory: 1048576000B/memory: 88B/g' docker-compose.yaml
    
    # 合并成一条命令如下: 注意分隔符“;”
    sed -i 's/cpus: '\''0.5'\''/cpus: '\''0.6'\''/g; s/memory: 88B/memory: 1048576000B/g' docker-compose.yaml
    

    -i:表示直接修改文件内容,而不是输出到标准输出。
    's/.../.../g':这是 sed 的替换命令。s 表示替换,g 表示全局替换(即替换每一行中的所有匹配项,可以改为数字即替换每一行中第几个匹配项)。
    cpus: '0.5':这是你要查找的内容。因为单引号在 sed 中有特殊含义,所以我们使用 ' 来转义它,使其作为普通字符。
    ;:使用分号,来分隔两个表达式。

    • vim方式
    #  注意分隔符“|”
    vim -c ':%s/cpus: '\''0.6'\''/cpus: '\''0.5'\''/g|:%s/memory: 1048576000B/memory: 88B/g|wq' docker-compose.yaml
    

    :%s:在整个文件 (%) 中进行替换 (s)。
    /原字符串/新字符串/g:将 原字符串 替换为 新字符串,g 表示全局替换(即每一行中的所有匹配项)。
    |:使用竖线,来分隔两个表达式。

    相关文章

      网友评论

          本文标题:shell常用命令之替换文件内容

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