SED在标记之间更改值
我在unix上有如下日志文件:SED在标记之间更改值,sed,Sed,我在unix上有如下日志文件: ####################################### ################start host1############ ####################################### ##java serv host1,def,java,es,dev L2,1,dev w,fr host1,def,java,es,dev L3,0,dev w,fr host1,def,java,es,dev M1,1,dev
#######################################
################start host1############
#######################################
##java serv
host1,def,java,es,dev L2,1,dev w,fr
host1,def,java,es,dev L3,0,dev w,fr
host1,def,java,es,dev M1,1,dev w,fr
host1,def,java,es,dev M4,0,dev w,fr
host1,def,java,es,dev N1,1,dev w,fr
host1,def,java,es,dev M5,1,dev w,fr
##c++ serv
host1,def,ESServer,es,dev L2,1,dev w,fr
host1,def,ESServer,es,dev L3,0,dev w,fr
host1,def,ESServer,es,dev M1,1,dev w,fr
host1,def,ESServer,es,dev M4,1,dev w,fr
host1,def,ESServer,es,dev N1,0,dev w,fr
host1,def,ESServer,es,dev M5,1,dev w,fr
#######################################
################end host1##############
#######################################
#######################################
################start host2############
#######################################
##java serv
host2,def,java,es,dev L2,0,dev w,fr
host2,def,java,es,dev L3,0,dev w,fr
host2,def,java,es,dev M1,0,dev w,fr
host2,def,java,es,dev M4,0,dev w,fr
host2,def,java,es,dev N1,0,dev w,fr
host2,def,java,es,dev M5,0,dev w,fr
##c++ serv
host2,def,ESServer,es,dev L2,0,dev w,fr
host2,def,ESServer,es,dev L3,0,dev w,fr
host2,def,ESServer,es,dev M1,0,dev w,fr
host2,def,ESServer,es,dev M4,0,dev w,fr
host2,def,ESServer,es,dev N1,0,dev w,fr
host2,def,ESServer,es,dev M5,0,dev w,fr
#######################################
################end host2##############
#######################################
我需要将标记“host1”之间的所有字符串中的值从1更改为0。例如:
#######################################
################start host1############
#######################################
##java serv
host1,def,java,es,dev L2,0,dev w,fr
host1,def,java,es,dev L3,0,dev w,fr
host1,def,java,es,dev M1,0,dev w,fr
host1,def,java,es,dev M4,0,dev w,fr
host1,def,java,es,dev N1,0,dev w,fr
host1,def,java,es,dev M5,0,dev w,fr
##c++ serv
host1,def,ESServer,es,dev L2,0,dev w,fr
host1,def,ESServer,es,dev L3,0,dev w,fr
host1,def,ESServer,es,dev M1,0,dev w,fr
host1,def,ESServer,es,dev M4,0,dev w,fr
host1,def,ESServer,es,dev N1,0,dev w,fr
host1,def,ESServer,es,dev M5,0,dev w,fr
#######################################
################end host1##############
#######################################
那么,有可能在SED上编写正则表达式吗?我会尝试写,但不明白如何继续。。。此表达式将所有值从1更改为0
sed 's/,0,/,1,/g' file
更新
谢谢大家!现在它改变了,但是如果我想要在HoST1中的标签java或C++中改变值呢?
大概是这样的:
sed'/start host1//c++/,/end host1/s/,0,/,1,/g'文件
sed '/start host1/,/end host1/s/,0,/,1,/g'
/start host1/
是起始地址/end host1/
是结束地址
请参阅。尝试以下操作:
sed '/^host1/s/,0,/,1,/g'
仅替换以host1开头的行(/^host1/
),其余的替换都可以