![여러 공백을 찾아 하나의 공백으로 바꾸는 방법은 무엇입니까?](https://linux55.com/image/153608/%EC%97%AC%EB%9F%AC%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%B0%BE%EC%95%84%20%ED%95%98%EB%82%98%EC%9D%98%20%EA%B3%B5%EB%B0%B1%EC%9C%BC%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
중복된 공백(여러개)을 찾아 하나의 공백으로 바꾸고 싶습니다. 나는 시도했다:
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
답변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
도착하다에스공간을 꽉 쥐세요.