修改指定文件的指定内容。
我有一个ini的配置文件,需要根据需要进行修改。
[HDBPLUGIN]
ComputerName= ;RTDB服务器机器名
IPA = 172.26.16.25
IPB = ; RTDB服务器IP地址B
IsLog = 0 ;是否输出日志,0为不输出;1为输出。其它值无效,默认为0.
PollingTime = 1000 ;向数据库请求数据的轮询周期,单位为毫秒 ; RTDB服务器IP地址A
;RTDB
[RTDBPLUGIN]
ComputerName=
IPA=172.26.35.195
IPB=
IsLog=0
PollingTime=1000
如上述内容,含有两个IPA和IPB。这两个值在实际有可能是不一样的。请问怎么进行修改。
使用find -name aa.ini | xargs sed -i 's/IPA=/IPA=172.2.2.2/',就把两个都改了。
这个怎么解决。。请高手赐教。
万分感激。
shell脚本修改指定文件的内容
-
- 帖子: 8
- 注册时间: 2012-08-06 15:04
-
- 帖子: 1318
- 注册时间: 2005-09-13 4:56
- 系统: Ubuntu Jammy Jellyfi
Re: shell脚本修改指定文件的内容
参数传递
cai99846 写了:修改指定文件的指定内容。
我有一个ini的配置文件,需要根据需要进行修改。
[HDBPLUGIN]
ComputerName= ;RTDB服务器机器名
IPA = 172.26.16.25
IPB = ; RTDB服务器IP地址B
IsLog = 0 ;是否输出日志,0为不输出;1为输出。其它值无效,默认为0.
PollingTime = 1000 ;向数据库请求数据的轮询周期,单位为毫秒 ; RTDB服务器IP地址A
;RTDB
[RTDBPLUGIN]
ComputerName=
IPA=172.26.35.195
IPB=
IsLog=0
PollingTime=1000
如上述内容,含有两个IPA和IPB。这两个值在实际有可能是不一样的。请问怎么进行修改。
使用find -name aa.ini | xargs sed -i 's/IPA=/IPA=172.2.2.2/',就把两个都改了。
这个怎么解决。。请高手赐教。
万分感激。
- ljj_jjl2008
- 论坛版主
- 帖子: 14256
- 注册时间: 2007-09-16 8:29
Re: shell脚本修改指定文件的内容
我是用循环语句来实现的类似的功能:如下是我的shell的一部分,供参考。
代码: 全选
s_text1="windows_where"
s_text2="no_bord_where"
i_text1="windows_where:0,$s_l,0,$[ $w - $s_l ],$[ $h - 40 ]"
i_text2="no_bord_where:0,$s_l,0,$[ $w - $s_l + 4 ],$[ $h - 14 ]"
cp ~/.icon-DE/wharf.rc ~/.icon-DE/wharf.rc~
cp /dev/null ~/.icon-DE/wharf.rc
while read LINE
do
s_include1=`echo "$LINE" |grep -q "$s_text1" && echo "1" ||echo "0"`
if [ $s_include1 == "0" ]; then
s_include2=`echo "$LINE" |grep -q "$s_text1" && echo "1" ||echo "0"`
if [ $s_include2 == "0" ]; then
echo $LINE >> ~/.icon-DE/wharf.rc
else
echo $i_text2 >> ~/.icon-DE/wharf.rc
fi
else
echo $i_text1 >> ~/.icon-DE/wharf.rc
fi
done < ~/.icon-DE/wharf.rc~
闻到死太贵, 麦克价更高。 有了笨笨兔, 二者皆可抛。
+ 我的六轮折腾
+ 折腾6轮的结果(对40余种WM的测试和分析,多种DE和WM并存的方案)
+ 折腾的中间成果:可以独立运行的一个Wharf(图标化的启动菜单)
+ 强烈推荐----折腾的终极成果:一个自己开发的DE环境
+ 签名空闲链接位置招租
+ 我的六轮折腾
+ 折腾6轮的结果(对40余种WM的测试和分析,多种DE和WM并存的方案)
+ 折腾的中间成果:可以独立运行的一个Wharf(图标化的启动菜单)
+ 强烈推荐----折腾的终极成果:一个自己开发的DE环境
+ 签名空闲链接位置招租
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: shell脚本修改指定文件的内容
我也是想的用read line...总感觉是“笨”办法
-
- 帖子: 8
- 注册时间: 2012-08-06 15:04
Re: shell脚本修改指定文件的内容
这个不能把新的值添加到文件的后面。第一个IPA属于[HDBPLUGIN],第二个IPA属于[RTDBPLUGIN]。如果都追加到文件后面的话,就都变成[RTDBPLUGIN]的了。
cai99846 写了:修改指定文件的指定内容。
我有一个ini的配置文件,需要根据需要进行修改。
[HDBPLUGIN]
ComputerName= ;RTDB服务器机器名
IPA = 172.26.16.25
IPB = ; RTDB服务器IP地址B
IsLog = 0 ;是否输出日志,0为不输出;1为输出。其它值无效,默认为0.
PollingTime = 1000 ;向数据库请求数据的轮询周期,单位为毫秒 ; RTDB服务器IP地址A
;RTDB
[RTDBPLUGIN]
ComputerName=
IPA=172.26.35.195
IPB=
IsLog=0
PollingTime=1000
如上述内容,含有两个IPA和IPB。这两个值在实际有可能是不一样的。请问怎么进行修改。
使用find -name aa.ini | xargs sed -i 's/IPA=/IPA=172.2.2.2/',就把两个都改了。
这个怎么解决。。请高手赐教。
万分感激。
- link_01
- 帖子: 1024
- 注册时间: 2008-11-05 13:24
Re: shell脚本修改指定文件的内容
这个简单
[bash]
echo '[HDBPLUGIN]
ComputerName= ;RTDB服务器机器名
IPA = 172.26.16.25
IPB = ; RTDB服务器IP地址B
IsLog = 0 ;是否输出日志,0为不输出;1为输出。其它值无效,默认为0.
PollingTime = 1000 ;向数据库请求数据的轮询周期,单位为毫秒 ; RTDB服务器IP地址A
;RTDB
[RTDBPLUGIN]
ComputerName=
IPA=172.26.35.195
IPB=
IsLog=0
PollingTime=1000' |sed -r '/HDBPLUGIN/,+3 s/IPA \s?= \t?.*/IPA = 10.0.0.1/;/RTDBPLUGIN/,+3 s/IPA\s?=\s?.*/IPA = 10.0.0.2/'
[/bash]
[bash]
echo '[HDBPLUGIN]
ComputerName= ;RTDB服务器机器名
IPA = 172.26.16.25
IPB = ; RTDB服务器IP地址B
IsLog = 0 ;是否输出日志,0为不输出;1为输出。其它值无效,默认为0.
PollingTime = 1000 ;向数据库请求数据的轮询周期,单位为毫秒 ; RTDB服务器IP地址A
;RTDB
[RTDBPLUGIN]
ComputerName=
IPA=172.26.35.195
IPB=
IsLog=0
PollingTime=1000' |sed -r '/HDBPLUGIN/,+3 s/IPA \s?= \t?.*/IPA = 10.0.0.1/;/RTDBPLUGIN/,+3 s/IPA\s?=\s?.*/IPA = 10.0.0.2/'
[/bash]
笔记
-------------------------------------
http://blog.163.com/wqt_1101
-------------------------------------
http://blog.163.com/wqt_1101
-
- 帖子: 7
- 注册时间: 2012-07-30 18:28
Re: shell脚本修改指定文件的内容
要发到11帖子才能回复感谢
- careone
- 帖子: 839
- 注册时间: 2007-12-17 21:41
Re: shell脚本修改指定文件的内容
建议写成2 行sed
注意
× 留意下 ini 文件内部的写法,前后两个 IPA 和等号前后是否有空格,保证完全匹配
× 留意这两行 sed 的先后执行顺序,先执行文字多的,最后执行 IPA后面带文字的,避免局部被包含替换
代码: 全选
sed -i 's/IPA = 172.26.16.25/IPA=172.2.2.2/g' aa.ini
sed -i 's/IPA=/IPA=172.2.2.2/g' aa.ini
× 留意下 ini 文件内部的写法,前后两个 IPA 和等号前后是否有空格,保证完全匹配
× 留意这两行 sed 的先后执行顺序,先执行文字多的,最后执行 IPA后面带文字的,避免局部被包含替换
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: shell脚本修改指定文件的内容
为什么要用两行 sed 呢?careone 写了:建议写成2 行sed注意代码: 全选
sed -i 's/IPA = 172.26.16.25/IPA=172.2.2.2/g' aa.ini sed -i 's/IPA=/IPA=172.2.2.2/g' aa.ini
× 留意下 ini 文件内部的写法,前后两个 IPA 和等号前后是否有空格,保证完全匹配
× 留意这两行 sed 的先后执行顺序,先执行文字多的,最后执行 IPA后面带文字的,避免局部被包含替换