Как совместить классы символов POSIX регулярного выражения?

Мне нужно комбинировать разные классы символов в регулярном выражении, используемом sed. Мне нужно сопоставить [:word:] и символ минус. Как это выглядит? Все мои попытки не удались при попытке или поиске решения.

В следующих строках я хотел бы совместить все до первого пространства:

 foo-bar | baz-xyz-123 | 

POSIXly:

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

удалит все, а не буквенные символы в вашем текущем языке, _ и - .

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

Но если вы хотите распечатать все до первого места:

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

или awk :

 awk '{print $1}'