Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SED在标记之间更改值_Sed - Fatal编程技术网

SED在标记之间更改值

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

我在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
更新

谢谢大家!现在它改变了,但是如果我想要在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/
),其余的替换都可以