我想知道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'
答案 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