我在 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 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
UPDATED.
谢谢大家!现在它改变了,但是如果我想改变host1中标签java或c++的值?
像这样的东西:sed '/start host1//c++/,/end host1/s/,0,/,1,/g' file
.