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

2024-04-09  本文已影响0人  95加不满

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

文件部分内容如下:

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

实现方式如下:

#实现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 -c ':%s/cpus: '\''0.6'\''/cpus: '\''0.5'\''/g|:%s/memory: 1048576000B/memory: 88B/g|wq' docker-compose.yaml

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

上一篇 下一篇

猜你喜欢

热点阅读