2013-04-23 4 views
0

다시 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 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까지의 값을 변경할 수 있습니다, 태그 "자바"와 "C++"그래서 로그 파일을했다? 이 변형은 나를 위해 작동하지 않습니다.

sed '/start host1/,/end host1/s/,L2,0,/L2,1,/g' file 

그리고 다른 질문. 이 값은 자바 태그에서만 변경하고 "host1"섹션에서는 C++ 태그에서만 변경하십시오. 미리 감사드립니다.

답변

3

당신이 함께 시도 할 수 있습니다, 당신이 시작하는이 같은

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

뭔가 :

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