Manipular Colunas e linhas num arquivo de texto [RESOLVIDO]

1. Manipular Colunas e linhas num arquivo de texto [RESOLVIDO]

germano neto neves
gneves

(usa Debian)

Enviado em 01/09/2022 - 13:38h

Tenho um arquivo (.csv) que está com a primeira linha da seguinte maneira:

a,b,c,d,e,f

Contudo as linhas de baixo estão assim:

e,f

Logo, o arquivo está assim:

a,b,c,d,e,f
e,f
e,f
e,f
e,f

Ou seja a primeira linha esta completa e esta certo, mas preciso copiar os dados a,b,c,d e completar essas colunas que estão faltando para baixo e deixar o arquivo certinho.

sabem como posso fazer isso?


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/09/2022 - 17:08h


gneves escreveu:

O comando funcionou perfeitamente, contudo considerando que os campos fossem somente letras, mas o arquivo real que tenho esta mais ou menos assim a primeira linha:

nome-sites,90891759712,vpc-08317527de03cf8cd,172.22.228.0/24,subnet-05b39458fa9dbcab0,172.26.228.192/26
ou seja, os 4 campos que ele vai pegar no grep precisa de outra expressão regular, certo?
Se sim, consegue me ajudar a fazer?

Tentei usar essa expressão aqui, mas não ta rolando... [A-z0-9]

awk -v cp=$(grep -Eo '^([A-z0-9]+,){4}' tudo_7.csv) -F"," '{if(NF>2) print $0;else print cp $0}' tudo_7.csv



Boa tarde, exatamente o que imaginei..... rsrsrsrsrs
Que não tivesse apenas uma letra no campo.....
Sim, é necessário adaptar a ExpReg.
grep -Eo '^([[:alnum:]./-]+,){4}' arq.txt
Opção com o cut:
cut -d"," -f1-4 <<< $(sed -n '1p' arq.txt)

Obs.:
A expressão que você usou, é inválida:
[A-z0-9]
grep -E '[A-z]+' arq.txt
grep: Intervalo final inválida

------------------------------------------------
O correto seria:
grep -Eo '^([A-Za-z0-9/.-]+,){4}' arq.txt
------------------------------------------------
É isso,
Se te ajudei, não esqueça de marcar como RESOLVIDO, e,
escolher a MELHOR RESPOSTA..

QQuer duvida, é só postar.....

______________________________________________________________________
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
______________________________________________________________________


3. Re: Manipular Colunas e linhas num arquivo de texto [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/09/2022 - 14:29h


Muito estranho esse seu arquivo. Um csv bom deveria ser:

a,b,c,d,e,f
,,,,e,f
,,,,e,f
,,,,e,f
,,,,e,f



4. Re: Manipular Colunas e linhas num arquivo de texto [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/09/2022 - 15:00h


gneves escreveu:

Tenho um arquivo (.csv) que está com a primeira linha da seguinte maneira:

a,b,c,d,e,f

Contudo as linhas de baixo estão assim:

e,f

Logo, o arquivo está assim:

a,b,c,d,e,f
e,f
e,f
e,f
e,f

Ou seja a primeira linha esta completa e esta certo, mas preciso copiar os dados a,b,c,d e completar essas colunas que estão faltando para baixo e deixar o arquivo certinho.
sabem como posso fazer isso?

Boa tarde, segue sugestão:
awk -v cp=$(grep -Eo '^([a-z]+,){4}' arq.txt)  -F"," '{if(NF>2) print $0;else print cp $0}' arq.txt
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f
a,b,c,d,e,f


Como funciona:
O comando:
grep -Eo '^([a-z]+,){4}'arq.txt
"Pega" os 4 primeiros campos.
------------------------------------------
awk -v cp=$(grep -Eo '^([a-z]+,){4}' arq.txt) -F"," '{if(NF>2) print $0;else print cp $0}' arq.txt
O awk, checa a quantidade de campos, se > 2, printa o que tem, senão, printa a var cp e o que tem....
Simples....
______________________________________________________________________
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
______________________________________________________________________



5. Re: Manipular Colunas e linhas num arquivo de texto

germano neto neves
gneves

(usa Debian)

Enviado em 01/09/2022 - 15:55h

O comando funcionou perfeitamente, contudo considerando que os campos fossem somente letras, mas o arquivo real que tenho esta mais ou menos assim a primeira linha:

nome-sites,90891759712,vpc-08317527de03cf8cd,172.22.228.0/24,subnet-05b39458fa9dbcab0,172.26.228.192/26

ou seja, os 4 campos que ele vai pegar no grep precisa de outra expressão regular, certo?

Se sim, consegue me ajudar a fazer?

Tentei usar essa expressão aqui, mas não ta rolando... [A-z0-9]

awk -v cp=$(grep -Eo '^([A-z0-9]+,){4}' tudo_7.csv) -F"," '{if(NF>2) print $0;else print cp $0}' tudo_7.csv





6. Re: Manipular Colunas e linhas num arquivo de texto [RESOLVIDO]

germano neto neves
gneves

(usa Debian)

Enviado em 01/09/2022 - 18:58h


man... muito obrigado... me ajudou muito...


7. Re: Manipular Colunas e linhas num arquivo de texto [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/09/2022 - 21:54h


gneves escreveu:


man... muito obrigado... me ajudou muito...

Por nada, e obrigado pela melhor resposta.
Precisando, é só postar.


______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts