shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script-pt] Me ajudem a entender o motivo!


From: Julio C. Neves
Subject: Re: [shell-script-pt] Me ajudem a entender o motivo!
Date: Thu, 18 Nov 2021 08:39:20 -0300

Fala George,
Vc, como nosso ex aluno, pode continuar levando suas dúvidas para a nossa lista no Telegram ou até mesmo na lista de Perguntas & Respostas do nosso site. Mas vamos lá: não sei se entendi bem pq são muitos campos e fica meio confuso, mas vou simplificar o seu exemplo para ver se é esse o caminho.

Me parece que está tudo certo, mas vc deseja ignorar o penúltimo campo. Para isso acontecer, vc realmente precisa criar um depósito de lixo para os campos que deseja ignorar.

$ IFS=, read a b c <<< 1,2,3,4
$ echo $a-$b-$c
1-2-3,4
O último campo sempre leva todo o resto. Para que isso não aconteça, temos de criar uma variável para receber o dado a ser desprezado:
$ IFS=, read a b lixo c <<< 1,2,3,4
$ echo $a-$b-$c
1-2-4
E se só desejássemos o 1º e o º campo, teríamos de fazer:
$ IFS=, read a lixo lixo b <<< 1,2,3,4
$ echo $a-$b
1-4

Abraços,
Julio
» Não pode fazer um belo curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?

Também damos treinamento presencial, com certificado,
em sua cidade. Nossa empresa é 100% regulamentada.



Em qua., 17 de nov. de 2021 às 20:08, George Robinson <george.robinson.br@gmail.com> escreveu:
Boa noite amigos!

Bom, pra começar, eu gostaria de dizer que já arrumei um workaround pro problema proposto, porém, eu gostaria de entender pq ele acontece. Vou explicar o que ocorre e como consegui dar a volta no problema, porém, gostaria de entender o que ocorre!

Tenho um arquivo csv contendo o seguinte cabeçalho:

header.csv:
purl,fname,mname,lname,address,city,state,zip,zip4,seq_num,pin,code,cardno,cardshort,card1,card2,card3,card4,exp_date,card_no_for_print,expirydatecard,ivrno,maildate

E aqui vai uma entrada pra passar dados relativos a esse cabeçalho:

joseoliveira.myurl.com,José,,Oliveira,10521 casa das couves,bananal,RS,27503,9290,1,650b263c5d,21811469,22222222222,11111111,33333,4444,5555,6666,"Dec 01, 2021",0000 0000 0000 0000,12/21,(888) 888-8888,11/01/21

Então eu criei um script para ler os campos e jogar para dentro de um arquivo.txt:

#!/bin/bash
tempResult='header.csv'
BULLDOGDATA='bulldog_data.txt'
> $BULLDOGDATA
while IFS=, read -r purl fname mname lname address city state zip zip4 seq_num pin code cardno cardshort card1 card2 card3 card4 exp_date card_no_for_print expirydatecard ivrno maildate;
do
echo "$purl,$fname,$lname,$address,$city,$state,$zip-$zip4,$seq_num,$code,$maildate" >> $BULLDOGDATA
done < $tempResult

=============================================================================================================================================================
Então começa o problema:

cat $BULLDOGDATA

purl,fname,lname,address,city,state,zip-zip4,seq_num,code,maildate
joseoliveira.myurl.com,José,Oliveira,10521 casa das couves,bananal,RS,27503-9290,1,21811469,(888) 888-8888,11/01/21

Por alguma razão que eu desconheço, o script trata o último separador como parte do campo.

Para resolver isso de curto prazo, eu criei adicionei mais um item de cabeçalho ficando assim:

while IFS=, read -r purl fname mname lname address city state zip zip4 seq_num pin code cardno cardshort card1 card2 card3 card4 exp_date card_no_for_print expirydatecard ivrno aaa maildate;
do

Que então me retorna:

purl,fname,lname,address,city,state,zip-zip4,seq_num,code,
joseoliveira.myurl.com,José,Oliveira,10521 casa das couves,bananal,RS,27503-9290,1,21811469,11/01/21

Alguém ter como me explicar porque ocorre e qualquer seria a forma elegante de tratar?

Muito obrigado!!!


.....


--
George Robinson
Analista de Suporte
Tel: +55 (21) 97449-8138
_______________________________________________
Lista brasileira de usuários de shell script
Endereço de e-mail da lista: shell-script-pt@nongnu.org
Para se inscrever ou desinscrever acesse: https://lists.nongnu.org/mailman/listinfo/shell-script-pt
Para ver os arquivos da lista (mensagens anteriores) e pesquisar nelas, acesse https://lists.nongnu.org/archive/html/shell-script-pt/

NOTA: A lista anterior, no Yahoo Groups, foi *desativada*. Por favor utilize somente esta.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]