1. 程式人生 > >linux讀取檔案中的一行,解析字串並賦值給變數

linux讀取檔案中的一行,解析字串並賦值給變數

line="/vision/system.properties.{IP}=192.168.12.123"

eval `echo $line|awk -F '.{' '{print "path="$1}'` 

echo $path

#以上命令實現 解析字串line,提取"/vision/system.properties" 並賦值給變數path

eval `echo $line|awk -F '.{' '{print "key_and_value="$2}'

eval `echo $key|awk -F '}=' '{print "key="$1}'

echo $key

#上面兩條命令實現 提取字串line中的"IP"並賦值給key

讀檔案

例如template.txt檔案中的內容有:

/vision/system.properties.{IP}=192.168.12.123

/vision/system.properties.{PORT}=8083

......

shell 指令碼如下

while read line
        do
                eval `echo $line|awk -F '.{' '{print "vt_path="$1}'`
                eval `echo $line|awk -F '.{' '{print "vt_key_and_value="$2}'`
                eval `echo $vt_key_and_value|awk -F '}' '{print "vt_key={"$1"}"}'`
                eval `echo $line|awk -F '}=' '{print "vt_value="$2}'`

               //判空

                if [ -n $vt_path ] && [ -n $vt_key ] &&[ "{}" != $vt_key ]  && [ -n $vt_value ]; then
                       
                        sed -i -e s/$vt_key/$vt_value/g $vt_path 
                fi
        :
        done < template.txt