Processando a saída de um sqlite db em um array ksh com espaços

1

Estou consultando um banco de dados SQLite3 da seguinte forma:

input=$(-separator "," "SELECT field1,field2,field3 FROM table1")

e obtenha este resultado:

Red,Yellow is a color,Blue

Eu preciso inserir isso em uma matriz, existe uma maneira de definir esse resultado em uma matriz em ksh sem ter o resultado retornar o campo entre aspas (o que não é possível, tanto quanto eu sei, de uma consulta declaração em sqlite)?

Como no exemplo:

#!/bin/ksh

IFS=','

input=(Red,Yellow is a color,Blue)

set -A array $input
print ${array[@]}
print ${array[0]}
print ${array[1]}
print ${array[2]}

Se eu executar o código acima, recebo isto:     $     vermelho amarelo     Vermelho     Amarelo

Se você encapsular o segundo elemento com aspas, assim:

#!/bin/ksh

IFS=','

input=(Red,"Yellow is a color",Blue)

set -A array $input
print ${array[@]}
print ${array[0]}
print ${array[1]}
print ${array[2]}

Você obtém o resultado adequado ...

$
Red
Yellow is a color
Blue

A solução que preciso saber é se há uma maneira de definir essa matriz sem as aspas no segundo elemento. Ou seria necessário fazer um pré-processo no retorno do resultado do banco de dados para encapsular os elementos com aspas antes de inseri-los no array. Se sim, qual seria um bom ponto de partida? Eu gostaria de ficar dentro do ksh se eu pudesse.

    
por Carl Lindgren 04.03.2015 / 19:58

1 resposta

2

O seguinte funciona para mim em mksh:

$ echo $KSH_VERSION
@(#)MIRBSD KSH R50 2014/10/07
$ x="Red,Yellow is a color,Blue"
$ oIFS=$IFS
$ IFS=,
$ y=($x)
$ IFS=$oIFS
$ echo ${y[1]}
Yellow is a color

Eu acredito que deve funcionar da mesma maneira em todas as versões do ksh.

    
por 05.03.2015 / 03:49