Buscar campos de um arquivo [RESOLVIDO]

1. Buscar campos de um arquivo [RESOLVIDO]

Tiago Frutuoso
tiagopaulista

(usa Debian)

Enviado em 05/04/2011 - 22:38h

Estou precisando de uma ajuda para manipular um arquivo, o arquivo é:

arquivo.csv

usuario:Marlon Marchini;marlon;894127f2052f398cea443cfb2f9f6407
grupo:Atendimento
diretorio:atendimento;vendas
bloqueio:http://www.google.com.br;http://www.evoserver.com.br;http://www.interface1.com.br;http://www.brunomaritto.com.br
usuario:Marjoly Danyelle;marjoly;8b49292ffb402c32e5b5e1e816eaed51
grupo:Atendimento
diretorio:atendimento;vendas
bloqueio:http://www.google.com.br;http://www.evoserver.com.br;http://www.interface1.com.br;http://www.brunomaritto.com.br
usuario:Gilmar Filho;Gilmar;0ba18c0c9384702bb9f4131fac19c48e
grupo:Atendimento
diretorio:atendimento;vendas
bloqueio:http://www.google.com.br;http://www.evoserver.com.br;http://www.interface1.com.br;http://www.brunomaritto.com.br
usuario:Bruno Mariotto;programacao;9b0154d64516fec6d82efe0926c7b7cd
grupo:Atendimento
diretorio:atendimento;vendas
bloqueio:http://www.google.com.br;http://www.evoserver.com.br;http://www.interface1.com.br;http://www.brunomaritto.com.br
usuario:Luis Henrique;henrique;7f35fbb32776daa901e0c975f48275e9
grupo:Atendimento
diretorio:atendimento;vendas
bloqueio:http://www.google.com.br;http://www.evoserver.com.br;http://www.interface1.com.brhttp://www.brunomaritto.com.br
usuario:Diego Teste;diego;8e0653f5d73bf13f1eb31d80cff84e83
grupo:Atendimento
diretorio:atendimento;vendas
bloqueio:http://www.google.com.br;http://www.evoserver.com.br;http://www.interface1.com.br;http://www.brunomaritto.com.br

o script é

script.sh

#!/bin/bash

while read Linha; do

Nome=`echo $Linha | awk -F ":" '{printf $2}' | cut -d";" -f1`
Login=`echo $Linha | awk -F ";" '{printf $2}' | cut -d";" -f1`
Senha=`echo $Linha | awk -F ";" '{printf $3}' | cut -d":" -f3`

echo "Nome: ${Nome}, Login: ${Login}, Senha: ${Senha}">> /home/tiago/Documentos/Empresa/Interface1/Teste/interface1_new.xml

Grupo=`echo $Linha | awk -F ";" '{printf $1}' | cut -d":" -f1`
Diretorio=`echo $Linha | awk -F ";" '{printf $1}' | cut -d":" -f1`

echo "Grupo: ${Grupo}, Diretorio: ${Diretorio}">> /home/tiago/Documentos/Empresa/Interface1/Teste/interface1_new.xml

done < /home/tiago/Documentos/Empresa/Interface1/Teste/new_interfaca1.csv

Estou tendo dificuldade para pegar os Campos: Grupo, Diretorio, Bloqueio

Alguem pode me ajudar

Att


  


2. Re: Buscar campos de um arquivo [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/04/2011 - 04:21h

Por favor não me ficou claro o que você quer que seu script script faça.


3. Re: Buscar campos de um arquivo [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 06/04/2011 - 05:46h

Acho que entendi Ronin. No script dele, somente as linhas do nome:login:senha são tratadas.
Ele quer que as outras também sejam.

Um modo é filtrar as linhas cada linha pela palavra do inicio. Assim:

while read Linha; do

if echo $Linha | grep -q ^Nome; then
# faz algo para nome
fi

if echo $Linha | grep -q ^Grupo; then
# faz algo para grupo
fi

if echo $Linha | grep -q ^Diretorio; then
# faz algo para diretorio
fi

if echo $Linha | grep -q ^Bloqueio; then
# faz algo para bloqueio
fi

done

Essa é uma maneira, claro que há outras. Você pode trocar o grep pelo operador [[ =~ ]] para
agilizar o processo, mas o conceito será o mesmo.

Bem, acho que é isso.

t+



4. Re: Buscar campos de um arquivo [RESOLVIDO]

Tiago Frutuoso
tiagopaulista

(usa Debian)

Enviado em 06/04/2011 - 09:58h

É isso ai Daemonio,

eu gostaria de pegar os outros campos, mais o if tem que ser dessa maneira que vc mandou mesmo, e ele vai pegar a linha grupo, diretorio???

Att


5. Re: Buscar campos de um arquivo [RESOLVIDO]

Marcos Paulo Ferreira
Daemonio

(usa Slackware)

Enviado em 06/04/2011 - 18:29h

Opa, vai sim tiago! Veja que suas linhas sempre começam com usuario, grupo, diretorio ou bloqueio. Para cada uma dessas palavras você tera que usar um if com grep para filtrar a linha certa.

Em seu código, você pode colocar um teste antes de cada variável (Grupo e Diretorio):

if echo "$Linha" | grep -q '^grupo'
then
Grupo=`echo $Linha | awk -F ";" '{printf $1}' | cut -d":" -f1`
echo -n "Grupo: ${Grupo}, "
elif echo "$Linha" | grep -q '^diretorio'
Diretorio=`echo $Linha | awk -F ";" '{printf $1}' | cut -d":" -f1` # elimine o awk ou o cut para agilizar
echo "Diretorio: ${Diretorio}">> /home/tiago/Documentos/Empresa/Interface1/Teste/interface1_new.xml
fi


Deve ficar mais ou menos assim. Qualquer dúvida que pintar tamo aí para te ajudar.

t+


6. Re: Buscar campos de um arquivo [RESOLVIDO]

Tiago Frutuoso
tiagopaulista

(usa Debian)

Enviado em 06/04/2011 - 19:16h

Valeu Daemonio, muito obrigado pela ajuda, agora sim esta funcionando.

Att,






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts