removido
(usa Nenhuma)
Enviado em 11/07/2017 - 19:04h
mlgrassi escreveu:
Amigo, gostei muito de sua ideia, mas me da uma dica para a seguinte linha:
linha_cabecalho=($(head -1 documento.txt | tr ';' ' ')
Mas na verdade encontrei um problema aqui. Quando o vetor é populado com o comando acima, existe um campo da coluna que possui espaços, que no caso é o campo Nome do Cliente. Ocorre que como o delimitador default em vetores é o espaço em branco, cada palavra do campo será atribuída a um índice, ou seja, índice x=Nome índice y=do e índice z=Cliente.
Na tentativa de contornar este problema, eu alterei o comando acima para utilizar o sed como substituidor de strings ao invés do tr, para incluir áspas duplas em cada campo para estes serem interpretados como devem ser:
linha_cabecalho=($(head -1 documento.txt | sed "s/^\|$/\"/g" | sed "s/\;/\"\ \"/g"))
Isto irá gerar a saída: "Telefone" "Endereço" "Nome do Cliente" "ID" "Bairro" "Estado" "Cidade" "Número"
Até aí tudo bem. O problema ocorre quando isso é atribuído ao vetor linha_cabecalho, onde as áspas duplas são interpretadas como caractere e não como intervalo de dados.
Alguma sugestão para resolver isso?
Apenas para complementar:
Não havia percebido. Cada espaço em branco pode ser substituídos por underline antes da construção do array. Basta inserir um sed antes do tr:
linha_cabecalho=($(head -1 documento.txt | sed 's/ /_/g' | tr ';' ' ')
Na verdade dá para usar outro tr. Algo como
tr ' ' '_'. Sed, tr ... para trocar apenas um caractere tanto faz.