用同一文件中的字符串替换文件中的字符串

时间:2015-05-19 13:09:32

标签: string bash replace sed

我有这样的文件(数十个变量):

PLAY="play"
APPS="/opt/play/apps"
LD_FILER="/data/mysql"
DATA_LOG="/data/log"

我需要一个将变量输出到另一个文件中的脚本(它们之间有空格):

PLAY=${PLAY} APPS=${APPS} LD_FILER=${LD_FILER}

有可能吗?

3 个答案:

答案 0 :(得分:3)

我会说:

$ awk -F= '{printf "%s=${%s} ", $1,$1} END {print ""}' file
PLAY=${PLAY} APPS=${APPS} LD_FILER=${LD_FILER} DATA_LOG=${DATA_LOG} 

循环遍历文件,并以格式=和空格一起打印var=${var}之前的内容。最后,它会打印一个新行。

请注意,这会在行尾留下一个尾随空格。如果这很重要,我们可以检查如何改进它。

答案 1 :(得分:1)

r'\btest\s*:\s*(.*)\.'

答案 2 :(得分:0)

sed 's/"\([^"]*"\)"/={\1}/;H;$!d
x;y/\n/ /;s/.//' YourFile

您的样本排除最后一行,如果这很重要

sed '/DATA_LOG=/ d
   s/"\([^"]*"\)"/={\1}/;H;$!d
   x;y/\n/ /;s/.//' YourFile