sed: substitui um determinado padrão por uma string arbitrária entre

0

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?

    
por Journeyman Geek 19.03.2010 / 06:38

2 respostas

1

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
    
por 19.03.2010 / 07:27
1

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 .

    
por 19.03.2010 / 07:13

Tags