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: address@hidden 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: address@hidden
---------------------------------------------------------------------
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