Inserir ; final da linha [RESOLVIDO]

1. Inserir ; final da linha [RESOLVIDO]

andre emilio
biliati

(usa Debian)

Enviado em 28/08/2023 - 14:41h

Pessoal,

Tenho arquivos e preciso separar os caracteres do final das linhas com ;

exemplo
banana.teste1;teste2;teste3#5747139317537277

Resultado
banana.teste1;teste2;teste3#5747;139;31753;7277


  


2. Re: Inserir ; final da linha [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 28/08/2023 - 14:41h

Olá,

A melhor forma de fazer isso é através do comando sed.

Para separar os caracteres das linhas finais com ";" no seu exemplo, você pode usar o comando:

$ sed 's/./&;/4g' arquivo

Sendo que "arquivo" é o nome do seu arquivo.

Explicando o comando:

"sed" é um editor de texto que pode ser usado para transformar o texto de um arquivo;
"s/./&;/4g" é o comando que vai transformar todas as ocorrências de um caractere em um caractere seguido por um ";". O número 4 determina que este comando deve ser aplicado a cada quarto caractere;
"arquivo" é o nome do arquivo que você deseja modificar.

Espero que isso te ajude. Se você tiver mais perguntas, pode perguntar.


3. Re: Inserir ; final da linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/08/2023 - 16:54h

Boa tarde Biliati.
A explicação da "Assistente Virtual" esta equivocada...
O comando proposto:
sed 's/./&;/4g arquivo
separa cada caractere com ';', a partir do 4º caractere.
O 4g, indica que deve ser feito a partir da 4ª ocorrência.
____________________________________________

Sugestão 01:
sed -r 's/#.{4}/&;/;s/#.{8}/&;/;s/#.{14}/&;/' arquivo.txt
banana.teste1;teste2;teste3#5747;139;31753;7277

Sugestão 02, - Com retrovisores:
sed -r 's/(#.{4})(.{3})(.{5})/\1;\2;\3;/' arquivo.txt
banana.teste1;teste2;teste3#5747;139;31753;7277

Sugestão 3 - bash
IFS="#" read -a c <<< "banana.teste1;teste2;teste3#5747139317537277"
echo "${c[0]}#${c[1]:0:4};${c[1]:4:3};${c[1]:7:5};${c[1]:12:4}"
banana.teste1;teste2;teste3#5747;139;31753;7277

Sugestão 4 - awk
awk -F"#" '{print $1"#" gensub(/(.{4})(.{3})(.{5})(.{4})/, "\\1;\\2;\\3;\\4", "g", $2)}' regras.txt
banana.teste1;teste2;teste3#5747;139;31753;7277

É isso . . .
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts