实现功能:使用脚本命令替换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 表示全局替换(即每一行中的所有匹配项)。
|
:使用竖线,来分隔两个表达式。
网友评论