답변:
문자 클래스는 \s
공백 문자와 일치합니다 <tab>
하고 <space>
.
예를 들면 다음과 같습니다.
$ sed -e "s/\s\{3,\}/ /g" inputFile
최소 3 개의 공백 문자를 2 개의 공백으로 바꿉니다.
고지 : POSIX 호환을 위해서는 s [[:space:]]
대신 문자 클래스 를 사용하십시오 \s
. 후자는 GNU sed 확장자이기 때문입니다. sed 및 BRE에 대한 POSIX 사양을 참조하십시오
[[:space:]
줄을 사용할 수 있습니다 [[:blank:]]
(그러나 줄 바꿈, 세로 탭 등은 제외).
이것은 MacOS 10.8에서 작동합니다.
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"
하나 이상의 공백을 일치 시키려고합니다.
-E
플래그를 지원합니다 .
sed의 일부 이전 버전은 \ s를 공백 일치 토큰으로 인식하지 못할 수 있습니다. 이 경우 하나 이상의 공백과 탭을 '[XZ] [XZ] *'와 일치시킬 수 있습니다. 여기서 X는 공백이고 Z는 탭입니다.
sed 's/[ \t]*/"space or tab"/'
sed
시스템 의 모든 버전에서 작동 합니까? 그렇지 않다면 이것이 다른 답변과 비슷한 방식으로 작동하는 곳을 언급 할 가치가있을 것입니다. 우리는 한계를 알고 이것이 의도 한 결과를 얻지 못할 수도 있습니다.