![정규식이 sed 명령의 입력과 일치하지 않는 이유 [중복]](https://linux55.com/image/123872/%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%B4%20sed%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%9E%85%EB%A0%A5%EA%B3%BC%20%EC%9D%BC%EC%B9%98%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%20%5B%EC%A4%91%EB%B3%B5%5D.png)
"ps aux" 출력에서 여분의 공백을 제거하고 공백 하나로 바꾸고 싶습니다. 내가 한 일은 다음과 같습니다.
ps axu | sed 's/[ ]+/ /g'
하지만 출력이 변경되지 않는 것 같습니다. 여전히 토큰 사이에 공백이 너무 많습니다.
username 4876 ... <the rest of columns ommitted>
이 정규식이 사용자 이름과 pid 사이의 공백과 일치하지 않는 이유는 무엇입니까?
답변1
sed
BRE(기본 정규 표현식)가 사용되지만 +
BRE의 일부가 아니기 때문입니다 . s/ */ /
(패턴 부분에 두 개의 공백)을 사용 하거나 -E
GNU 또는 BSD의 확장 정규 표현식에 사용 sed
:sed -E 's/ +/ /g'