Substituindo um Substring por sed

0

Então eu tenho uma linha parecida com esta ish

somelongbullshit:888:morelongbullshitthatcanhaveanything

E eu quero substituir o segundo : por um caractere de tabulação. Eu posso corresponder de forma confiável a substring que eu quero substituir com o seguinte:

^.*:[0-9]*(:)

Eu quero substituir essa substring que tenho lá. Então eu tentei fazer alguns sed

$ echo somelongbullshit:888:morelongbullshitthatcanhaveanything | sed 's/:[0-9]*(:)/\t/g'
sed: -e expression #1, char 19: invalid reference  on 's' command's RHS

Mas recebo um erro. Tenho certeza que há algum erro de sintaxe que eu tenho errado, mas para a vida de mim eu posso encontrá-lo.

Eu também estou aberto a soluções melhores (como o awk).

    
por Christopher 10.04.2016 / 00:22

2 respostas

1

Você pode usar sed assim com a opção --regex-extended :

echo somelongbullshit:888:morelongbullshitthatcanhaveanything | sed --regexp-extended 's/:[0-9]*(:)/\t/g'
    
por Mahdi 10.04.2016 / 00:27
0
  1. Nem todas as versões de sed reconhecerão a guia. então pressione Ctrl + V e pressione a tecla tab do seu teclado.

  2. use este comando

     $ echo "somelongbullshit:888:morelongbullshitthatcanhaveanything" | sed 's/\:/      /2'
     somelongbullshit:888    morelongbullshitthatcanhaveanything
    
por rɑːdʒɑ 10.04.2016 / 09:32