linux读取文件中的一行,解析字符串并赋值给变量

来源:互联网 发布:linux arp嗅探 编辑:程序博客网 时间:2024/05/21 01:57

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

原创粉丝点击