export const environment = {
production: true,
firebase: {
apiKey: "APIKEY",
authDomain: "AUTHDOMAIN",
databaseURL: "DATABASEURL",
projectId: "PROJECTID",
storageBucket: "STORAGEBUCKET",
messagingSenderId: "MESSAGINGSENDERID"
},
functionURL:"FUNCTIONSURL",
};
我现在拥有这种类型的文件,我想使用bash替换所有变量(APIKEY
,AUTHDOMAIN
,..),请提供一些通用的解决方案!
sed -i 's/($APIKEY)/('"$Master_APIKEY"')/g'
已用于文件中的每个变量。
答案 0 :(得分:2)
要在每个变量前加上字符串$Master_
,请使用:
sed 's/\(.*: "\)\(.*\)"/\1$Master_\2"/g' inputfile
此命令的工作方式如下:
\(.*: "\)
:匹配所有内容,直到字符串: "
并捕获到第1组
\(.*\)"
:匹配最后一个"
之前的所有内容并捕获到第2组
\1$Master_\2"
:替换为第1组的内容,然后替换为$Master_
和第2组的内容。
输出:
export const environment = {
production: true,
firebase: {
apiKey: "$Master_APIKEY",
authDomain: "$Master_AUTHDOMAIN",
databaseURL: "$Master_DATABASEURL",
projectId: "$Master_PROJECTID",
storageBucket: "$Master_STORAGEBUCKET",
messagingSenderId: "$Master_MESSAGINGSENDERID"
},
functionURL:"FUNCTIONSURL",
};
您可以添加-i.bak
标志来替换原始文件并制作备份文件。
答案 1 :(得分:2)
以下是您要达到的目标的一个示例:
P.S。您并不需要全力以赴,您可以直接在文件上使用sed -i,这只是演示单行代码,我们将在给定模式下插入变量:
a=REPLACEMENT ;cat inputfile | sed "s/\"\(.*\)\"/\""$a"_\1\"/g"
您提供的输入文件中的输出:
export const environment = {
production: true,
firebase: {
apiKey: "REPLACEMENT_APIKEY",
authDomain: "REPLACEMENT_AUTHDOMAIN",
databaseURL: "REPLACEMENT_DATABASEURL",
projectId: "REPLACEMENT_PROJECTID",
storageBucket: "REPLACEMENT_STORAGEBUCKET",
messagingSenderId: "REPLACEMENT_MESSAGINGSENDERID"
},
functionURL:"REPLACEMENT_FUNCTIONSURL",
};