POSIX 문자 클래스와 정규 표현식을 결합하는 방법은 무엇입니까?

POSIX 문자 클래스와 정규 표현식을 결합하는 방법은 무엇입니까?

sed에서 사용하는 정규식에서 다양한 문자 클래스를 결합해야 합니다. [:word:]와 마이너스 를 일치시켜야 합니다 -. 어떻게 보입니까? 나의 모든 시도는 해결책을 찾거나 시도하는 데 실패했습니다.

다음 문자열에서 첫 번째 공백까지 모든 항목을 일치시키고 싶습니다.

foo-bar     |
baz-xyz-123 |

답변1

POSIX적으로:

sed 's/[^[:alnum:]_-]//g'

현재 로케일에서 영숫자가 아닌 모든 문자 가 제거됩니다 _.-

$ echo 'foo-bar     |' | sed -e 's/[^[:alnum:]_-]//g'
foo-bar

그러나 첫 번째 공백 이전의 모든 내용을 인쇄하려면 다음을 수행하십시오.

sed -e 's/^\([^ ]*\) .*/\1/'

또는 awk:

awk '{print $1}'

관련 정보