我正在编写一个shell脚本,用于编辑docker-compose.yml文件(在MacOS上运行)。
我正在尝试删除一个位于文件末尾的,看起来像这样的块:
microservice-itai-ms:
image: ms-itai-ms:master
environment:
NODE_ENV: 'development'
NPM_TOKEN: 'SECRET'
ports:
- "3022:3000"
depends_on:
- "redis-cluster"
我正在运行以下命令以删除此块:
sed -i.bak '/.*itai-ms.*/,+9d' docker-compose.yml
9是包括图案行的行数。
运行上面的命令时,出现以下错误:
echo docker-compose.yml | sed -e '/.*itai-ms.*/,+9d'
sed: 1: "/.*itai-ms.*/,+9d
": expected context address
我在做什么错了?
答案 0 :(得分:1)
如果“ itai-ms”确实没有出现在块之前,并且该块确实在文件末尾,则可以执行以下操作:
pkill sxhkd; setsid sxhkd
编辑:
粗略翻译后,命令是“从sed -i.bak '/itai-ms/,$d' docker-compose.yml
到/itai-ms/
[即,从包含” itai-ms“的第一行到文件的最后一行] 执行$
[即删除行]“
如果您要将“ itai-ms”作为变量传递(称为d
),请尝试以下操作:
X
请注意双引号和转义的"/$X/,\$d"
。