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
.