용도 sed -e "s/[[:space:]]\+/ /g"
여기에 설명이 있습니다 :
[ # start of character class
[:space:] # The POSIX character class for whitespace characters. It's
# functionally identical to [ \t\r\n\v\f] which matches a space,
# tab, carriage return, newline, vertical tab, or form feed. See
# https://en.wikipedia.org/wiki/Regular_expression#POSIX_character_classes
] # end of character class
\+ # one or more of the previous item (anything matched in the brackets).
교체를 위해 공백 만 삽입하려고합니다. [:space:]
문자 클래스의 약어이므로 정규식 엔진이 어떤 문자를 넣을지 알지 못하므로 거기에서 작동하지 않습니다.
이 +
때문에의 나오지 정규식 엔진과 정규식에서 탈출해야하는 +
반면 일반 문자 \+
'하나 더'에 대한 메타 문자입니다. 정규 표현식 마스터 링의 86 페이지 에서 Jeffrey Friedl은 ed와 grep이 이스케이프 된 괄호를 사용했다고 각주에 언급했습니다. " 나는 그가 더하기 기호에 대해 같은 방식을 느꼈기 때문에 메타 문자로 사용하려면 그것을 피할 필요가 있다고 생각합니다. 이것으로 쉽게 넘어 질 수 있습니다.
에서 당신이 탈출해야합니다 나오지도 +
, ?
, |
, (
,와 )
. 또는 다음과 같이 보인다 (확장 정규식을 사용하는 -r 사용 sed -r -e "s/[[:space:]]\+/ /g"
또는sed -re "s/[[:space:]]\+/ /g"