não está claro se você quer substituir o "sshd" também, então eu assumi que é.
sed 's/sshd\[[0-9]*\]//g' file
caso contrário,
sed 's/sshd\[[0-9]*\]/sshd[]/g' file
Eu estou tentando limpar um arquivo de log para melhor legibilidade - há uma carga de coisas desnecessárias lá às minhas necessidades - eu basicamente tenho que substituir o sshd [xxxx] onde xxxx é um número arbitrário com, bem, um espaço ou nada. Embora eu possa substituir uma string conhecida, eu não tenho idéia de como fazer um cur card sed neste caso- Então, como faço isso?
Você está tentando substituir todos números depois de sshd dentro de [] sem nada. Para selecionar números, você pode usar um intervalo [0-9]\+ , em que [0-9] corresponde a qualquer dígito e \+ significa um ou mais desses antes .
Então, para o seu caso, o regexp para substituir números por zeros seria
sed -r s/\[[0-9]\+\]/\[\]/
em que -r permite regexps prolongados como o acima. Os \[ e \] são apenas para escapar de [ e ] , para que não sejam interpretados por sed .
Para operadores de regexp, como \+ , consulte esta seção no manual gawk , para lista de caracteres como [0-9] consulte esta seção - a maior parte do que você vê ali também se aplica a sed .