여러 공백을 찾아 하나의 공백으로 바꾸는 방법은 무엇입니까?

여러 공백을 찾아 하나의 공백으로 바꾸는 방법은 무엇입니까?

중복된 공백(여러개)을 찾아 하나의 공백으로 바꾸고 싶습니다. 나는 시도했다:

sed -e 's/ []+/ /g' myfile.txt > myfile2.txt

그러면 빈 파일이 생성됩니다. 왜? 내 목표를 달성하는 방법은 무엇입니까?

답변1

명령이 잘못되었습니다. sed: -e expression #1, char 10: unterminated 's' command표준 출력이 생성되지 않아 빈 파일이 있을 수 있습니다.

노력하다sed -e 's/ \+/ /g' myfile.txt > myfile2.txt

반품:https://stackoverflow.com/questions/22939323/sed-command-to-replace-multiple-spaces-into-single-spaces

답변2

표준에서 sed하나 이상의 SPC 문자를 검색하려면 구문은 다음과 같습니다.

sed 's/ \{1,\}/ /g'

또는

sed 's/  */ /g'

(별 앞에 공백이 두 개 있습니다.) 또는 더 읽기 쉽게 만들려면 다음을 수행하세요.

sed 's/[ ][ ]*/ /g'

-E(확장 정규식의 경우) 표준에 추가 되면 (이는 다음 주요 POSIX 버전에서 발생해야 하며 많은 구현에서 이미 지원함) 다음을 수행할 수도 있습니다.

sed -E 's/ +/ /g'

일부 구현에서는 기본 정규식( 제외 )을 에 대한 별칭으로 이해할 sed수도 있습니다 .\+-E\{1,\}

하지만 여기서는 직접 사용할 수 있습니다 tr.

tr -s ' ' < file.in > file.out

도착하다에스공간을 꽉 쥐세요.

관련 정보