Regex SED更改文件中的值

Regex SED更改文件中的值,regex,sed,Regex,Sed,再次提出有关SED的问题。所以我有一个日志文件: ####################################### ################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

再次提出有关SED的问题。所以我有一个日志文件:

#######################################
################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##############
#######################################

#######################################
################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”部分中L2符号后的值从0更改为1,标记为“java”和“c++”?此变体不适用于我:

  sed  '/start host1/,/end host1/s/,L2,0,/L2,1,/g' file
还有一个问题。如何仅在java标签中更改此值,而仅在“HoST1”节中的C++标记中更改此值。 提前谢谢

你可以试试这个

sed '/start host1/,/end host1/{s/\(host1,def,java,es,dev \)L2,0/\1L2,1/g}' file
你可以试试这个

sed '/start host1/,/end host1/{s/\(host1,def,java,es,dev \)L2,0/\1L2,1/g}' file

类似这样的东西可以让您开始:

awk -F, -vOFS=',' '/host1,def,java,es,dev L2/{$6=1}1' input

类似这样的东西可以让您开始:

awk -F, -vOFS=',' '/host1,def,java,es,dev L2/{$6=1}1' input