返回列表 发帖

【已解决】20元求助,linux下更新文本文件的部分内容。

本帖最后由 sysclock 于 2019-5-22 11:48 编辑

版上牛人真多,继续发帖子活跃气氛:

=================================================
1、要更新的文件名sysconfig.ini,内容如下
#[Version]
VERSION=1.0

#[NetConf]
dac_name=beijing
dac_numb=15
dac_mac=00:0a:35:00:1e:xx
dac_ip=192.168.0.2xx
netmask=255.255.255.0

#[TrigerConf]  
trigerSquThd=600
trigerSquRatio=30
Ch1TrigerThd=600
Ch1TrigerRatio=30
Ch1TrigerLen=1000
Ch2TrigerThd=600
Ch2TrigerRatio=30
Ch2TrigerLen=1000
Ch3TrigerThd=600
Ch3TrigerRatio=30
Ch3TrigerLen=1000
Ch4TrigerThd=600
Ch4TrigerRatio=30
Ch4TrigerLen=1000

#[TransConf]
ServerIP=192.168.0.102
FtpPort=21
Username=test
Password=test
DestionFolder=S1
IsDeleted=1
SavePath=/tmp/

#[StationConf]
StationId=15
StationDesc=CP

2、另外一个文件名字remote.ini,内容和格式和他一样。通过ftp已经下载到本地了。

3、如果检测到remote.ini的版本号比sysconfig.ini更大,那么用老的文件sysconfig.ini中的以下两项目更新新的remote.ini文件
dac_name
dac_numb

4、举例,
(1)假如remote.ini内容如下:
#[Version]
VERSION=1.01

#[NetConf]
dac_name=xx
dac_numb=00
dac_mac=00:0a:35:00:1e:xx
dac_ip=192.168.0.2xx
netmask=255.255.255.0

#[TrigerConf]  
trigerSquThd=600
trigerSquRatio=30
Ch1TrigerThd=600
Ch1TrigerRatio=30
Ch1TrigerLen=1000
Ch2TrigerThd=600
Ch2TrigerRatio=30
Ch2TrigerLen=1000
Ch3TrigerThd=600
Ch3TrigerRatio=30
Ch3TrigerLen=1000
Ch4TrigerThd=600
Ch4TrigerRatio=30
Ch4TrigerLen=1000

#[TransConf]
ServerIP=192.168.0.102
FtpPort=21
Username=test
Password=test
DestionFolder=S1
IsDeleted=1
SavePath=/tmp/

#[StationConf]
StationId=15
StationDesc=CP

(2)经过脚本更新后,remote.ini的内容应该如下:
#[Version]
VERSION=1.01

#[NetConf]
dac_name=beijing
dac_numb=15
dac_mac=00:0a:35:00:1e:xx
dac_ip=192.168.0.2xx
netmask=255.255.255.0

#[TrigerConf]  
trigerSquThd=600
trigerSquRatio=30
Ch1TrigerThd=600
Ch1TrigerRatio=30
Ch1TrigerLen=1000
Ch2TrigerThd=600
Ch2TrigerRatio=30
Ch2TrigerLen=1000
Ch3TrigerThd=600
Ch3TrigerRatio=30
Ch3TrigerLen=1000
Ch4TrigerThd=600
Ch4TrigerRatio=30
Ch4TrigerLen=1000

#[TransConf]
ServerIP=192.168.0.102
FtpPort=21
Username=test
Password=test
DestionFolder=S1
IsDeleted=1
SavePath=/tmp/

#[StationConf]
StationId=15
StationDesc=CP

================================
谢谢
你好,北京

#!/bin/bash
dnameSys=$(awk -F '=' '/dac_name=/{print $2}' sysconfig.ini)
dnumbSys=$(awk -F '=' '/dac_numb=/{print $2}' sysconfig.ini)
dnumbRem=$(awk -F '=' '/dac_numb=/{print $2}' remote.ini)
if [[ $dnumbSys -gt $dnumbRem ]]; then
    sed "s/dac_name=.*/dac_name=$dnameSys/; s/dac_numb=.*/dac_numb=$dnumbSys/" remote.ini > remote.ini.new
    mv remote.ini.new remote.ini
fiCOPY
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

#!/bin/bash
nVerLocal=`sed -n "/VERSION/{s/.*=//;p}" sysconfig.ini`
nVerRemote=`sed -n "/VERSION/{s/.*=//;p}" remote.ini`
echo Local Version : $nVerLocal
echo Remote Version : $nVerRemote
nDiff=`awk -v x="${nVerLocal}" -v y="${nVerRemote}" 'BEGIN{printf "%d\n",(y-x)*100}'`
if [ $nDiff -gt 0 ]
then
        echo Remote version is newer than local version.
        echo Now will update the dac_name and dac_numb
        dac_name=`sed -n "/dac_name/{s/.*=//;p}" sysconfig.ini`
        dac_numb=`sed -n "/dac_numb/{s/.*=//;p}" sysconfig.ini`
        echo dac_name : ${dac_name}
        echo dac_numb : ${dac_numb}
        sed "s/dac_name.*/dac_name=${dac_name}/;s/dac_numb.*/dac_numb=${dac_numb}/;" remote.ini >remote_new.ini
        echo Output file : remote_new.ini
        echo Newest content is :
        cat remote_new.ini
fiCOPY
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

返回列表