torr - encontrando (e editando) uma linha com exatamente três pontos (não adjacentes)

0

Eu preciso acrescentar alguns caracteres ao final da linha em um arquivo que contém exatamente três caracteres ( : ). Os três caracteres : não serão adjacentes.

Originalmente, a linha que eu precisava editar continha os caracteres /16 e consegui encontrar e editar com êxito usando o comando sed :

sed "/\/16/ s/$/ ${runid} ${dirname} ${doc}/" $logname  > $logname.new

No entanto, o aplicativo foi alterado e os caracteres /16 não aparecem mais na linha de destino. A única maneira de encontrá-lo agora é encontrar a linha contendo exatamente três : caracteres.

    
por Scorpion136 30.11.2016 / 16:26

1 resposta

1

tente

sed "s/^[^:]*:[^:]*:[^:]*:[^:]*$/s/$/ ${runid} ${dirname} ${doc}/" $logname  > $logname.new

onde

  • [^:]* qualquer número de símbolo não é dois pontos
  • ^ e $ são início e fim de linha.

Isso provavelmente poderia ser jogado no golfe.

    
por 30.11.2016 / 16:43

Tags