쉘을 이용해서 특수문자를 바꿔야 해서 sed를 사용하는데 이해가 안되는 오류가 좀 있습니다.
<%_ by [@, ("_" = dash)
_%> by ]
처음 2개의 문자에 대해 내 구성은 다음과 같습니다. sed -i y/\<%\/\]\/ test.htm
작동하지만 여기서 대시 문자를 어떻게 추가합니까? 두 번째는 이렇게 되어야 하는데 sed -i y/\%>\/\]\/
이런 오류가 발생했습니다 bash: /]/: is a folder
. 도와주실 수 있나요?
답변1
무엇을 바꾸고 싶은지 잘 모르겠지만(첫 번째 경우에는 - 또는 _로) 이것은 나에게 잘 작동합니다.
$ echo "<%_" | sed 's/<%_/_/'
_
$ echo "<%_" | sed 's/<%_/-/'
-
$ echo "_%>" | sed 's/_%>/\]/'
]
정규식 식별자(/)를 이스케이프 처리하는 것 같습니다.
답변2
매개변수를 인용하고 s
명령을 사용하여 문자열 교체를 수행해야 합니다. 이 -e
옵션을 사용하여 여러 명령 표현식을 제공할 수 있습니다.
sed -i -e 's/<% /[@/' -e 's/ %>/]/' filename