[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【已解决】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

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

  1. #!/bin/bash
  2. nVerLocal=`sed -n "/VERSION/{s/.*=//;p}" sysconfig.ini`
  3. nVerRemote=`sed -n "/VERSION/{s/.*=//;p}" remote.ini`
  4. echo Local Version : $nVerLocal
  5. echo Remote Version : $nVerRemote
  6. nDiff=`awk -v x="${nVerLocal}" -v y="${nVerRemote}" 'BEGIN{printf "%d\n",(y-x)*100}'`
  7. if [ $nDiff -gt 0 ]
  8. then
  9.         echo Remote version is newer than local version.
  10.         echo Now will update the dac_name and dac_numb
  11.         dac_name=`sed -n "/dac_name/{s/.*=//;p}" sysconfig.ini`
  12.         dac_numb=`sed -n "/dac_numb/{s/.*=//;p}" sysconfig.ini`
  13.         echo dac_name : ${dac_name}
  14.         echo dac_numb : ${dac_numb}
  15.         sed "s/dac_name.*/dac_name=${dac_name}/;s/dac_numb.*/dac_numb=${dac_numb}/;" remote.ini >remote_new.ini
  16.         echo Output file : remote_new.ini
  17.         echo Newest content is :
  18.         cat remote_new.ini
  19. fi
复制代码
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

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

TOP

返回列表