2011-11-16 13 views
1

내가 나오지와 패턴 전에 선을 삽입하려는 패턴 앞에 줄을 삽입 : - 삽입 '대한 XmlRootElement (이름 = "ABC")' "공용 클래스"전에이 나오지 -

이것은이다 스크립트

sed -e script testfile.txt 
sed: -e expression #1, char 13: Unterminated `s' command 

이 사람이 나를 도울 수 :이 프로그램을 실행할 때

'/public class/i\@XmlRootElement(name="ABC")' 

그러나 나는 오류가 발생했습니다?

덕분에 내가 사용하고있어 나오지도의에 대한

답변

4

는, 당신은 당신의 i\ 후 줄 바꿈을 포함해야하고, 즉, 빈 라인

sed '/public class/i\ 
@XmlRootElement(name="ABC") 

' file > outFile 

참고 삽입을 '종료' 새로운 삽입 된 텍스트 뒤에 공백 라인.

참고 : i\ 다음에 줄 끝 부분에 공백이 없어야합니다.

당신이 당신의 sed를 별도의 스크립트 파일에 저장했다는 것을 알았 기 때문에 형식 제한이 거기에도 적용됩니다. 단지 코드를 둘러싼 '' 쌍을 제거하십시오. 당신은 인라인 (in-line) 귀하 나오지도 스크립트를 삽입하는 경우,

sed -f script testfile.txt 

-e

를 사용하는 사용하십시오 나오지도 스크립트 파일에 대한 -e을 사용하기 때문에

그리고 더 중요한 것은, 스크립트가 실패하고, 제 1 용액은 위의 사전 될 수있다 - -e이 붙습니다.

편집a\을 'i \'로 고정 참조. Doah

희망이 도움이됩니다.

+0

당신을 감사합니다. 그것은 작동합니다! Fyi, 나는 UnxUtils.zip의 창문에 sed를 사용했다. 스크립트는 작은 따옴표를 제거 할 때 텍스트 파일에 적용됩니다. – TommyQ

+0

예, 방금 편집을 완료했습니다. 해당 옵션을 언급합니다. 투표 해줘서 고마워. 행운을 빕니다. – shellter

2

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

# cat <<\! >/tmp/test.sed 
> /^aaa/i\ 
> xxx 
> /^bbb/a\ 
> yyy\ 
> zzz 
> /^ccc/c\ 
> the end 
> ! 
# echo -e "aaa\nbbb\nccc" | sed -f /tmp/test.sed 
xxx 
aaa 
bbb 
yyy 
zzz 
the end 

또는 명령 줄에서

:

# echo -e "aaa\nbbb\nccc" | sed -e '/^aaa/i\xxx' -e '/^bbb/a\yyy\nzzz' -e '/ccc/c\the end' 
xxx 
aaa 
bbb 
yyy 
zzz 
the end 

매우 유용한 참고 자료가 here