用其当前值替换@ * @环境变量标记,_within files_

时间:2014-05-08 00:26:09

标签: regex bash shell unix

我想知道shell命令允许我用unix中的相应环境变量替换文件中定义的标记e.g. myproperty='@SOME_ENV_VARIABLE@'

cat FILE1 ;
someproperty='@SOME_ENV_VARIABLE@'

export SOME_ENV_VARIABLE=twochain;
...do the replace here with FILE1...

cat FILE1 ;
someproperty='twochain'

3 个答案:

答案 0 :(得分:3)

perl -pe 's/\@(.*?)\@/$ENV{$1}/g' < infile > outfile

修改 要就地修改特定文件,请在somefile.bak

中创建原始文件的备份
perl -i.bak -pe 's/\@(.*?)\@/$ENV{$1}/g' somefile

删除.bak个字符以避免创建任何备份文件。

答案 1 :(得分:2)

这是一个开始

$ cat FILE1
someproperty='@USERNAME@'

$ awk '$2 = ENVIRON[$2]' FS=@ OFS= FILE1
someproperty='Steven'

答案 2 :(得分:0)

使用sed

export SOME_ENV_VARIABLE=twochain;
sed -i "s/@[^@]*@/${SOME_ENV_VARIABLE}/" FILE1