Como adicionar caractere em posição específica do texto

Confesso que o título do artigo não explica exatamente o que esta dica faz, mas é que achei demasiadamente complicado explicar em poucas palavras o que esta dica realmente faz; porém vou tentar dar um exemplo do problema que tive e em seguida a solução para ficar um pouco mais fácil:

De posse de um arquivo de texto com a relação de várias linhas telefônicas eu precisava editá-las para que tal arquivo fosse convertido para .csv e em seguida importado para uma tabela MySQL. Os números telefones estavam no seguinte formato:

554512345678

554523456789

554534567890

554545678901

554556789012

554567890123

554578901234

554589012345

A minha necessidade para com este arquivo era a inserção de um “;” (ponto e vírgula) exatamente na posição 8 de cada linha. Obviamente se fosse um arquivo do tamanho deste meu exemplo, a inserção manual do “;” não demandaria muito trabalho, porém o arquivo em questão possuia mais de 2000 linhas.

Se você já é leitor aqui do blog e acompanha meus artigos e dicas, deve saber que meu editor de textos preferido é o vim justamente por suas muitas funcionalidades. Então obviamente procurei uma solução dentro dele para resolver o meu problema, mas infelizmente não encontrei.

Claro que não desisti, e com um pouco mais de buscas, descobri que o comando sed fazia exatamente o que eu queria. A solução encontrada então foi esta:

sed 's/.\{8\}/&;/' arquivo.txt

Na verdade, o comando acima não insere diretamente no arquivo.txt o “;” na oitava posição de cada linha conforme eu queria, ele apenas me apresenta na tela como ficaria o resultado. Após ter certeza de que o parâmetro está correto, daí então executei o mesmo comando acrescentando apenas alguns poucos parâmetros:

sed 's/.\{8\}/&;/' arquivo.txt > arquivo.csv

Pronto, desta forma eu criei um arquivo novo com as alterações que eu desejava e mantive o original para o caso de precisar de algum backup.

comments powered by Disqus