Por que a expressão regular não corresponde à entrada com o comando sed [duplicate]

0

Gostaria de cortar espaços extras da saída "ps aux" e substituí-los por um espaço. O que eu faço é:

ps axu | sed 's/[ ]+/ /g'

Mas a saída parece estar inalterada, ainda consigo espaços demais entre os tokens.

username    4876 ... <the rest of columns ommitted>

Por que essa expressão regular não corresponde ao espaço vazio entre nome de usuário e pid?

    
por Wojciech Wirzbicki 18.12.2017 / 14:14

1 resposta

2

Porque sed usa expressões regulares básicas (BRE) e + não faz parte delas. Use s/ */ / (dois espaços na parte padrão) ou -E para expressões regulares estendidas no GNU ou BSD sed : sed -E 's/ +/ /g'

    
por 18.12.2017 / 14:21