2013-08-28 3 views
0

저는 초보자이고 "특별한"캐랙 터를 sed로 바꾸고 싶습니다. 나는 잘 형성되지 않은 XML 파일을 가지고 있으며, 데이터 행의 끝에 ">"그것을 끝내기 위해 그것을 끝내고 ">" ">"로 바꿀 필요가있다. 그러나 나는하려고하면Sed는 ">"를 "/>"로 바꿉니다.

sed -i s/>//>/g FILE 

반환 => -bash : // : 아무튼

sed -i s,>,\>,g FILE 

맨 페이지와도

sed -i s/>/\/>/g FILE 

:와

같은 디렉토리인가 이 문제를 해결하지 못합니다.

누구에게이 문제가 발생합니까?

답변

2

당신은 당신이 그것을 구분 사용하는 경우 슬래시 문자를 이스케이프해야합니다

sed 's/>/\/>/g' 

을 또는 다른 문자 예를 들어, 사용이 아니라, 파일에 모든 일치를 대체 할 것으로

sed 's_>_/>_g' 

주 마지막 하나

> 앞에 /을 붙이지 않으려면 다음을 사용하십시오.

sed -r 's_[^/]>_/>_g' file 
+0

안녕, 나는 두 옵션을 모두 시도했지만 "는 나오지 : -e 표현 # 1, 문자 2 : 종단되지 않은'의 '명령"을 말한다에 나오지 -i의 _> _ \> _ g 인 data.xml와 sed -is ,>, \>, g data.xml –

+0

@MarcPursals 잘못된 슬래시가 있습니다. 슬래시'/'로 시도하십시오. 또한 매개 변수를 작은 따옴표로 묶으십시오. – user000001

+1

그것은 작동합니다! 감사!! –

0

sed -i 's /> $ //>/g 'FILE이 (가) 당신에게 효과가 있습니까?

$ echo "<blah> <blah>" | sed 's/>$/\/>/g' 
<blah> <blah/> 
관련 문제