2013-10-10 3 views
1
$ NAME : corry 
$$.Inc s d 
$$.Oc s 
$$.TO 

G1 ty n1 EE EE M T1 T2 $$SRU 
G2 n1 y OO OO M T3 T4 $$SRU 
.EON 

$ NAME : patrick 
$$.Inc c d 
$$.Oc c 
$$.TO 

G1 td n3 EE EE M T5 T6 $$SRU  
G2 n3 y OO OO M T7 T8 $$SRU 
.EON 


$ NAME : danny 

$$.Inc a b 
$$.Oc b 
$$.TO 

@lc1 corry 
@lc2 patrick 
1 to n0 EE EE M S1 S2 $$SRU 
G2 n0 y OO OO M S3 S4 $$SRU 
.EON 

$ NAME : sandy  
$$.Inc m n 
$$.Oc n 
$$.TO 

G1 te n1 EE EE M b1 b2 $$SRU  
G2 n1 o OO OO M b3 b4 $$SRU  
.EON  


$ NAME : manager 
$$.Inc o e 
$$.Oc e  
$$.TO  

@lc3 danny  
@lc4 sandy  
G1o ty n1 EE EE M T1 T2 $$SRU  
G2o n1 y OO OO M T3 T4 $$SRU 
.EON 

특정 범위에서 특정 패턴을 검색하는 방법은 무엇입니까? 예를 들어 $ Name : manager에서 End of name (.EON) 끝까지의 범위에서 G1o을 검색하고 G1o.corry.n으로 바꿔 봅니다. perlop 문서에서특정 범위의 텍스트에서 패턴을 검색하고 다른 문자열로 바꾸는 방법은 무엇입니까?

답변

1
perl -pe 's/G1o/G1o.corry.n/ if /\$ NAME : manager/ .. /\.EON/' file 

:

스칼라 문맥에서, ".."부울 값을 반환합니다. 연산자는 플립 플롭처럼 쌍 안정이며 sed, awk 및 다양한 편집기의 라인 범위 (쉼표) 연산자를 에뮬레이션합니다. 각 ".."연산자는 심지어 자신을 포함하는 서브 루틴 호출을 통해 자체 부울 상태를 유지합니다. 왼쪽 피연산자가 거짓이면 거짓입니다.

+0

감사합니다. 같은 섹션에서 여러 줄을 대체해야한다면 어떻게해야합니까? – annel

+0

@ user2865279 당신은's ///, s /// if if ..'또는'if (..) {s ///; s ///}' –

+0

또 다른 질문이 있습니다. 어떻게 텍스트의 특정 부분을 추출하고 그것을 표시 할 수 있습니까? 예를 들어 $ NAME : corry와 $ NAME : Manager에서 섹션을 출력하고 싶습니다. – annel

0
sed '/^\$ NAME : manager/,/\.EON/s/G1o/G1o.corry.n/' 
관련 문제