Você pode usar sed
assim com a opção --regex-extended
:
echo somelongbullshit:888:morelongbullshitthatcanhaveanything | sed --regexp-extended 's/:[0-9]*(:)/\t/g'
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).
Você pode usar sed
assim com a opção --regex-extended
:
echo somelongbullshit:888:morelongbullshitthatcanhaveanything | sed --regexp-extended 's/:[0-9]*(:)/\t/g'
Nem todas as versões de sed
reconhecerão a guia. então pressione Ctrl + V e pressione a tecla tab do seu teclado.
use este comando
$ echo "somelongbullshit:888:morelongbullshitthatcanhaveanything" | sed 's/\:/ /2'
somelongbullshit:888 morelongbullshitthatcanhaveanything