Como combinar as classes de caracteres POSIX de um regex?

3

Eu preciso combinar diferentes classes de caracteres em uma expressão regular usada por sed. Eu preciso corresponder [:word:] e o símbolo menos - . Como isso parece? Todas as minhas tentativas falharam em tentar ou pesquisar uma solução.

Nas seguintes sequências, gostaria de combinar tudo até o primeiro espaço:

foo-bar     |
baz-xyz-123 |
    
por SpaceTrucker 20.08.2015 / 15:24

1 resposta

2

POSIXly:

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

removerá tudo, não são caracteres alfanuméricos em sua localidade atual, _ e - .

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

Mas se você quiser imprimir tudo até o primeiro espaço:

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

ou awk :

awk '{print $1}'
    
por 20.08.2015 / 15:44