2011-08-05 4 views
2

sed의 특정 줄 수 아래에 텍스트를 어떻게 추가 할 수 있습니까? 나는 '대상'다음 파일이있는 경우sed의 특정 줄 수 아래에 텍스트를 어떻게 추가 할 수 있습니까?

은보다 구체적으로,

$ cat Target 
########## 
# (1) 
########## 

echo $PWD 


########## 
# (2) 
########## 


########## 
# (3) 
########## 

는 어떻게 '# (2)'사이의 선 블록 '# (3)'블록을 삽입 할 수 있습니까? 다른 세상에서는 sed를 사용하여 'Goal'파일을 만들고 싶습니다.

$ cat Goal 
########## 
# (1) 
########## 

echo $PWD 


########## 
# (2) 
########## 

echo "yay" 

########## 
# (3) 
########## 

나는 여러 가지 방법을 시도하고 봤지만 많은 단서를 찾을 수 없습니다. (왜 특수 패턴 '\ n'이 작동하지 않습니까?)

제게 조언을주십시오.

+1

이것은 당신이 솔루션의 종류를 사용할 수있는 경우 AWK와 같은 프로그래밍 언어, 펄 등으로 달성하기 매우 쉽게, 표시 만 한 태그를 추가 어떤 언어를 사용하고 싶습니다. (1 개 이상의 언어를 사용하면 소리가납니다 .--). 행운을 빕니다. – shellter

+0

sed의 개행에 관한이 질문은 도움이 될 것입니다. - http://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n – arunkumar

답변

1
sed '/# (2)/ {n;n;a\ 
echo "yay" 
}' Target > Goal 
1

이 당신을 위해 작동 될 수 있습니다

sed '/^# (2)/,/# (3)/{H;//{x;s/.*#\n\n/&echo "yay"\n/p};d}' Target > Goal 
########## 
# (1) 
########## 

echo $PWD 


########## 
# (2) 
########## 

echo "yay" 

########## 
# (3) 
########## 
관련 문제