Boa tarde amigos!
Analisei o material enviado pelos sempre excelentes Alfredo e Julio Neves, e confesso que fico cada vez mais impressionado com o poder do bash para esse tipo de tarefa.
Sim, eu sempre tenho algo novo a aprender, me esforço, mas acredito que isso é algo que é necessário sempre buscar mais e mais... Eu consegui, depois de ler e reler N vezes o seguinte resultado:
#!/bin/bash
# Declara Fields
declare -A Fields
Fields=(
[fname]='First name'.string\(\)
[mname]='Middle name'.string\(\)
[lname]='Last name'.string\(\)
[address]='Address'.string\(\)
[address2]='Address2'.string\(\)
[CITY]='City'.string\(\)
[ST]='state'.string\(\)
[ZIP]='zip'.string\(\)
[SEQ_NUM]='seq_num'.int64\(\)
[CREDIT_DAT]='credit_dat'.string\(\)
[MAIL_DATE]='mail_date'.string\(\)
[MAIL_CLASS]='mail_class'.string\(\)
[EXP_DATE]='exp_date'.string\(\)
[INHOME_DATE]='inhome_date'.string\(\)
[lasercode]='lasercode'.string\(\)
[BATCH_ID]='batch_id'.int32\(\)
[REFCODE]='refcode'.string\(\)
[PURL]='purl'.string\(\)
[PHONE]='phone'.string\(\)
[PKG_NAME]='pkg_name'.string\(\)
[consumerid]='consumerid'.int64\(\)
[age]='age'.int32\(\)
[fico]='fico'.int32\(\)
[open_rev_cnt]='open_rev_cnt'.string\(\)
[utilization]='utilization'.int32\(\)
[debt]='debt'.int32\(\)
);
for field in "${!Fields[@]}"
do
Value=("${Fields[@]}" "${field[@]}")
done
echo ${Value[@]}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Que produz a seguinte saída:
fico.int32() open_rev_cnt.string() lasercode.string() First name.string() refcode.string() utilization.int32() inhome_date.string() purl.string() zip.string() mail_date.string() credit_dat.string() phone.string() Address.string() City.string() mail_class.string() Last name.string() batch_id.int32() debt.int32() consumerid.int64() age.int32() seq_num.int64() exp_date.string() Address2.string() state.string() pkg_name.string() Middle name.string() mname
Que aredito eu que é baseado no índice mname.
Até aqui, vi que é possível gerar o valor do vetor de acordo com o índice, se eu nao estou enganado, esse resultado é um elemento único. Como eu cheguei a essa conclusão? S eu colocar o echo dentro do FOR, ele vai produzir a mesma saída para cada um dos 25 elementos do array FIELDS.
Entendo que para efeitos de comparação com o arquivo myfile.csv que possui o seguinte cabeçalho:
( fname,mname,lname,address,address2,CITY,ST,ZIP,SEQ_NUM,CREDIT_DAT,MAIL_DATE,MAIL_CLASS,EXP_DATE,INHOME_DATE,lasercode,BATCH_ID,REFCODE,PURL,PHONE,PKG_NAME,consumerid,age,fico,open_rev_cnt,utilization,debt)
eu acredito que estaria tentando comparar toda a saída do echo com cada um dos elementos do arquivo.csv.
Estaria eu enganado?
Atenciosamente,