用sed替换多字符串

时间:2018-08-31 21:48:43

标签: bash shell sed

我正在使用eno(&a, &b); // pass the address of a and b ^ ^ int eno(int* j, int* k) // j and k now point to a and b respectively. ^ ^ 替换包含以下内容的文本文件中的字符串:

sed

在脚本中使用以下命令:

prop="distributed-${DEPLOY_ENV}.properties, database-${DEPLOY_ENV}.properties, compute-${DEPLOY_ENV}.properties"

但是我得到以下输出;仅替换#!/usr/bin/env bash env=dev sed \ -e "s/\${DEPLOY_ENV}/"${env}"/" \ 的第一个匹配项:

DEPLOY_ENV

如何替换所有的出现而不是第一次出现?

3 个答案:

答案 0 :(得分:1)

sed "s/\${DEPLOY_ENV}/"${env}"/g"

为全局添加/g

答案 1 :(得分:1)

您只需要通过添加“ g”来使作用域成为全局范围,以便影响所有匹配项。

#!/usr/bin/env bash
set -x
env=dev
sed \
-e "s/\${DEPLOY_ENV}/"${env}"/g" \

并按以下方式运行命令(其中 text_file_with_envs.txt 代表您的原始文件, text_file_with_envs.txt.new 是您的更新文件):

$ ./sed-multi-repl.sh < ./text_file_with_envs.txt > ./text_file_with_envs.txt.new

这是猫在新文件上的输出:

$ cat  text_file_with_envs.txt.new

prop="distributed-dev.properties, database-dev.properties, compute-dev.properties"

答案 2 :(得分:0)

正确的语法是:

$ env=dev
$ sed 's/${DEPLOY_ENV}/'"$env"'/g' file
prop="distributed-dev.properties, database-dev.properties, compute-dev.properties"