Chinaunix
标题:
如何修改文本配置行内地址?
[打印本页]
作者:
dogal
时间:
2015-01-21 08:49
标题:
如何修改文本配置行内地址?
本帖最后由 dogal 于 2015-01-22 17:31 编辑
例如配置文本
iop.txt只有一个 地址
192.168.1.1
要修改的配置文件serv .conf
serv{
proy ........;
ttp://
192.168.2.2
;
}
怎么用iop.txt里的地址替换serv.conf里
/ 和 ;
之间的IP地址
sed , awk ?? 或?
谢谢大牛们。
作者:
zsszss0000
时间:
2015-01-21 09:01
本帖最后由 zsszss0000 于 2015-01-21 09:15 编辑
echo "ttp://10.2.3.5;" | sed -e 's/\/.*$/\/\/10.1.2.3;/'
作者:
o枫叶o飘零
时间:
2015-01-21 09:02
sed 's/192.168.1.2/10.2.3.5/
作者:
goofool
时间:
2015-01-21 09:06
本帖最后由 goofool 于 2015-01-21 09:07 编辑
#ubuntu 14.04
sed -r 's/[.0-9]+/1.1.1.1/'
复制代码
作者:
dogal
时间:
2015-01-21 09:17
本帖最后由 dogal 于 2015-01-21 10:02 编辑
回复
3#
o枫叶o飘零
上了文本
作者:
o枫叶o飘零
时间:
2015-01-21 09:33
回复
5#
dogal
上2个文本
作者:
dogal
时间:
2015-01-21 09:41
本帖最后由 dogal 于 2015-01-21 09:42 编辑
回复
2#
zsszss0000
大牛,
再看看贴的内容,
帮帮忙,
你的回复比教靠近我的需求
作者:
zsszss0000
时间:
2015-01-21 09:47
本帖最后由 zsszss0000 于 2015-01-21 09:50 编辑
大牛 当不起,我只不过刚刚开始学习sed而已。
你的需求应该是要将/和;中间的字符串给替换掉吧。
有些时候,直接把文本贴出来,并且举几个自己想要得到的例子,大家才能更好的理解你的意图
回复
7#
dogal
作者:
dogal
时间:
2015-01-21 09:49
回复
8#
zsszss0000
是的啊
作者:
dogal
时间:
2015-01-21 10:11
我把贴的内容改了下
把问题提的更具体了点
大家帮帮忙啊
或者写个脚本也可以啊。
作者:
liion631818
时间:
2015-01-21 10:14
@ubuntu:~/bash-script$ awk 'NR==FNR{ip=$0;next}{print $0 | "sed \"s/[^/]*$/"ip";/\""}' B.txt A.txt
ttp://10.2.3.5;
复制代码
回复
9#
dogal
作者:
dogal
时间:
2015-01-21 10:19
回复
11#
liion631818
大神,我的贴的问题改了下,更具体了点,能否在回答下,帮帮忙,
作者:
Herowinter
时间:
2015-01-21 10:22
回复
1#
dogal
ip=`head -1 ip.txt`;sed -r "s#(ttp://).*#\1$ip;#" server.conf
server{
proxy ........;
ttp://192.168.1.1;
}
复制代码
修改原文件用sed -ri
作者:
冰谛
时间:
2015-01-21 10:37
本帖最后由 冰谛 于 2015-01-21 10:38 编辑
awk -F "/" 'BEGIN{getline < "ip.txt";a=$0";"}/ttp/{OFS="/";$NF=a}1" server.conf
作者:
dogal
时间:
2015-01-21 10:48
膜拜技术帝
作者:
zxy877298415
时间:
2015-01-21 13:29
awk 'FNR==NR{t=$0;next}{print gensub(/(ttp:\/\/)(.*)(;)/,"\\1" t "\\3",$0)}' ip.txt server.conf
server{
proxy ........;
ttp://192.168.1.1;
i
复制代码
回复
1#
dogal
作者:
bulletmarquis
时间:
2015-01-21 14:09
回复
12#
dogal
没看明白你的难点在什么地方
1、sed直接改写文件,使用-i
2、sed中使用要用变量,把单引改为双引即可以$var的方式导入变量
3、变量或匹配符里面有/,可以把"s/${SRC}/${TARGET}/g"改为"s#${SRC}#${TARGET}#g"
作者:
Buring__
时间:
2015-01-21 14:43
回复
14#
冰谛
刁刁的,NB
作者:
A_Traveler
时间:
2015-01-21 15:20
回复
1#
dogal
[root@localhost test]# cat ip.txt
192.168.1.1
[root@localhost test]# cat server.conf
server{
proxy ........;
ttp://192.168.2.2;
}
[root@localhost test]# sed -r -i '/ttp/s/[0-9.]+/'$(cat ip.txt)'/' server.conf
[root@localhost test]# cat server.conf
server{
proxy ........;
ttp://192.168.1.1;
}
作者:
聆雨淋夜
时间:
2015-01-21 23:14
回复
19#
A_Traveler
你好,在sed内部使用单引号这种用法没见过,
'$(cat ip.txt)'
能否解释一下执行过程。
作者:
gameb_y
时间:
2015-01-22 02:05
[root@C6401 txt]# sed -r 's#(^.*://).*$#\1'$(cat ip.txt)';#g' server.conf
server{
proxy ........;
ttp://192.168.1.1;
}
作者:
jason680
时间:
2015-01-22 12:43
回复
20#
聆雨淋夜
sed -r -i '
/ttp/s/[0-9.]+/
'$(cat ip.txt)'
/
' server.conf
作者:
A_Traveler
时间:
2015-01-23 00:07
回复
20#
聆雨淋夜
首先: 并非是在sed内部使用单引;
在command执行sed语句使用单引的目的是为了将单引号内部的语句全部直接交给sed,而不让shell做任何处理;
'/ttp/s/[0-9.]+/'$(cat ip.txt)'/'
这条语句拆分为3个部分: '/ttp/s/[0-9.]+/'
$(cat ip.txt)
'/'
shell首先处理$(cat ip.txt),转换为192.168.1.1;然后在与另外两部分一起交给sed处理;实际交给sed的语句为:/ttp/ s/[0-9.]+/192.168.1.1/ ;然后在经过sed的内部处理.
作者:
聆雨淋夜
时间:
2015-01-23 11:24
回复
22#
jason680
看懂了,多谢
作者:
聆雨淋夜
时间:
2015-01-23 11:28
回复
23#
A_Traveler
解释很详细,多谢
作者:
songyc_2015
时间:
2015-01-26 13:21
ttp://这个应该是固定的吧?
1.sed '/^ttp:\/\//c\
ttp://'`cat ip.txt`';' server.conf
2.awk 'FNR==NR{s=$0;next}/^ttp:\/\//{$0="ttp://"s";"}1' ip.txt server.conf
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2