Olá, Pessoal!

Meu nome é Fábio Costa e estou começando em Shell, tendo estudado tanto 
pelo "Papo de Botequim" do Júlio Neves (Fantástico) quanto pelo livro de 
Shell Script do mesmo (simplesmente necessário). Mas preciso de uma 
força e creio que vocês podem me dar uma forcinha em uma encrenca séria 
que estou tendo com o Shell.

Estou com um problema em um script shell que estou bolando aqui para o
meu serviço. O objetivo do mesmo é pegar um arquivo CSV e extrair alguns
dados dele. Na linha de comando, já tinha tentado o comando:

head -n 1 $1 | sed 's/,/\n/g' | sed 's/"//g'

E conseguido de maneira bem sucedida separar os nomes dos campos. Porém,
esses nomes contêm espaços em branco e quando eu tento usar o comando:

all_params=`head -n 1 $1 | sed 's/,/\n/g' | sed 's/"//g'`

no meu Shell Script, ele coloca os nomes dos campos separados pelos
espaços, o que não quero (quero que ele separe linha a linha, pois é
como eu converto no segundo 'sed').

Além disso, tentei definir antes dessa linha a variável IFS para "\n",
mas tudo que consegui foi fazer uma confusão dos diabos.

Como exemplo, criei esse arquivo anexado (sed-test.txt), e rodei no
take_value.sh em questão (tive que remover alguns trechos que são
específicos do serviço meu, mas nada que vá interferir no que preciso
desvendar :P ) e o resultado de passar o arquivo 'sed-test.txt' nele foi:

teste
de
linha
outro
teste
de
linha
mais
um
teste
de
linha

Enquanto que quando usei o comando da variável all_params em um
terminal, o resultado foi:

teste de linha
outro teste de linha
mais um teste de linha

Conforme esperado.

Estou no Linux, Fedora Cora 2, shell "GNU bash, version
3.00.16(1)-release (i386-redhat-linux-gnu)".

Alguma sugestão? Agradeço antecipadamente por qualquer retorno...

-- 

Obrigado!

Fábio Emilio Costa              Analista de Software Básico I
SERPRO - Serviço Federal de Processamento de Dados
Performance - Ambiente Distribuído          SUPCD/CDGTI/CDGS1
email: [EMAIL PROTECTED]                 Notes:fabioc
Ramal: (#11) 1513       




"Esta mensagem do SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa 
pública federal regida pelo disposto na Lei Federal nº 5.615, é enviada 
exclusivamente a seu destinatário e pode conter informações confidenciais, 
protegidas por sigilo profissional. Sua utilização desautorizada é ilegal e 
sujeita o infrator às penas da lei. Se você a recebeu indevidamente, queira, 
por gentileza, reenviá-la ao emitente, esclarecendo o equívoco."

"This message from SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a 
government company established under Brazilian law (5.615/70) -- is directed 
exclusively to its addressee and may contain confidential data, protected under 
professional secrecy rules. Its unauthorized use is illegal and may subject the 
transgressor to the law's penalties. If you're not the addressee, please send 
it back, elucidating the failure."
  ----------

"teste de linha","outro teste de linha","mais um teste de linha"



[As partes desta mensagem que não continham texto foram removidas]



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a