![sed는 다음 오류 sed를 반환합니다: -e 표현식 #1, 문자 101: `s'에 대한 알 수 없는 옵션 [중복]](https://linux55.com/image/79824/sed%EB%8A%94%20%EB%8B%A4%EC%9D%8C%20%EC%98%A4%EB%A5%98%20sed%EB%A5%BC%20%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4%3A%20-e%20%ED%91%9C%ED%98%84%EC%8B%9D%20%231%2C%20%EB%AC%B8%EC%9E%90%20101%3A%20%60s'%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%95%8C%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%98%B5%EC%85%98%20%5B%EC%A4%91%EB%B3%B5%5D.png)
<p>
태그()를 일부 텍스트 파일의 경로로 바꾸는 스크립트를 작성 중입니다 *.prop
. 그러나 실행하면 다음과 같은 오류가 발생합니다.
sed: -e expression #1, char 101: unknown option to `s'
내 코드는 다음과 같습니다.
sed -i -- "s/<q>$(echo $destpath | sed -e 's/\\/\\\\/g' -e 's/\//\\\//g' -e 's/&/\\\&/g')/\ResultsTesting/\/g" *.prop
코드 에코를 인쇄하면 다음과 같습니다.
sed -i -- \
s/<q>\/home-students\/rmorales\/testAPK\/air.air.air.com.tabc.gsn-2014_5_11-dex2jar\/ResultsTesting\//g \
myFile.prop
누구든지 나를 도와줄 수 있나요?
답변1
나는 이렇게 할 것이다:
printf %s\\n "$destpath" |
sed -e 's|[]\$/^.*[]|\\&|g' \
-e 's|.*|s/<q>&/ResultsTesting\\//|' |
sed -i -- -f- myfile.prop
(부분)네 문제는 너야(확실히)잘못된 정당을 인용했습니다. 대체 문의 왼쪽에서는 s///
다음 문자를 이스케이프해야 합니다.
$^.*\[] delimiter
처음 두 개는 일부 장소에서만 이스케이프하면 되지만 다른 곳에서는 이스케이프해도 아무런 문제가 없으므로 모두 이스케이프하는 것이 좋습니다. /
관례적으로 명령의 구분 기호는 - 입니다.
오른쪽의 경우 탈출해야 합니다.
\& delimiter newline
이게 네가 하고 싶은 일인 것 같아(인용에는 약간의 작업이 필요하지만). LHS에서는 줄바꿈을 피할 수 있는 방법이 실제로 없지만(대체 이스케이프 문자열로 완전히 바꾸는 것을 제외하고 \n
), RHS에서 이스케이프될 수 있습니다. 그러나 LHS에 이스케이프된 텍스트를 삽입하고 있습니다.
위의 예에서 저는 sed
여러분과 같은 두 개의 s를 사용하고 있지만 내부 명령 대체 대신 왼쪽에서 오른쪽으로 명령을 파이프합니다.(보통 내 취향)그리고 스위치를 사용하여 sed
생성된 스크립트를 표준 입력으로 가져옵니다 -f-
.