이게 효과가 있어
echo " HELLO x=10" |sed 's/ *\HELLO \+/HELLO /g'
hello 앞과 "HELLO" 뒤에 연속된 공백을 제거하세요.
그러나 이것은 그렇지 않습니다
echo " WHERE x=10" |sed 's/ *\WHERE \+/WHERE /g'
아래와 같이 \w를 사용하여 \w를 탈출하려고 했습니다.
echo " WHERE x=10" |sed 's/ *\\"WHERE" \+/\"WHERE" /g'
그러나 이것조차 작동하지 않습니다. 무엇이 잘못됐나요?
답변1
왜 H와 W를 탈출하고 싶나요?
\H
및 구체적인 의미가 있으며, 및 \W
와는 다릅니다 .H
W
echo " WHERE x=10" |sed 's/ *WHERE \+/WHERE /g'
답변2
이전 단어를 제거하면 됩니다 \
.
echo " WHERE x=10" |sed 's/ *WHERE \+/WHERE /g'
WHERE x=10
\
정규식의 in은 다양한 유형의 일치를 위한 이스케이프 문자로 사용됩니다 .
\w
(밑줄) 문자를 포함하여 단어 문자, 즉 의 문자를 찾는 데 사용됩니다 .a-z
A-Z
0-9
_
대문자 버전으로부정적인게임, 당신의 \W
수단아니요분명히 정규식을 만드는 단일 문자와 일치합니다.실패하다입력 문자열의 경우.
예를 들면 다음과 같습니다.
echo " {HERE x=10" |sed 's/ *\WHERE \+/WHERE /g'
WHERE x=10
그것은 작동하기 때문에{
예일치합니다 \W
( {
단어 문자가 아니기 때문에)!