找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18168|回复: 2

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

  [复制链接]
发表于 2019-5-22 10:32:39 | 显示全部楼层 |阅读模式
本帖最后由 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

================================
谢谢
发表于 2019-5-22 11:33:42 | 显示全部楼层
  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
复制代码
发表于 2019-5-22 11:45:23 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:04 , Processed in 0.017161 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表