[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Avaliando duas linhas subsequentes
From: |
Jose Edson Moreno Jr |
Subject: |
Re: [shell-script] Avaliando duas linhas subsequentes |
Date: |
Thu, 9 Sep 2010 17:31:50 -0300 |
Boa tarde Cesar
Bom segue um exemplo utilizando o awk, coloque dentro de arquivo de
script, assim facilita a identação e a compreensão
cat teste.txt | awk 'BEGIN {count=0}
{
if (NF > 0 )
{
if (count < 3 )
{
printf $0
count++
}
else
{
count=0
printf "\n"
}
if ( count < 3 )
printf " , "
}
else
{
if ( count > 0 )
{
count++
while ( count < 3 )
{
count++
printf " , "
}
}
printf "\n"
count=0
}
}'
Observe , como voce determinou que no máximo teria 3 campos no seu cvs e
sempre teria nome e telefone (isto são premissas suas), o script atende a
sua necessidade, até também se faltar o telefone, porém se você desejar que
sempre tenha os 3 campos do cvs , não importando o que falte, o seu arquivo
tera ou que ter uma formatação fixa (as linhas representando os campos) ou
indentificador do que significa cada linha para obter um cvs válido. Mas
vamos as explicações, o awk basicamente conta o numero de linhas que ele
leu (supondo que sempre tenha as linhas em ordem nome, telefone e email) e
vai criando os campos de linha do cvs sem mudar de linha (printf ...) ,
quando ele vê que colocou o ultimo campo ele muda de linha (printf "\n") ,
agora se ele vê que linha que ele esta lendo é vazia (NF=0) , ele vê quantos
campos ja colocou e preenche com o numero de "," faltantes ... quase um
programinha em C ..hehehe
Boa Sorte !
Em 9 de setembro de 2010 14:30, César Vianna <address@hidden>escreveu:
>
>
> Pessoal, tenho um arquivo texto assim
>
> NOME
> TELEFONE
> EMAIL
>
> NOME
> TELEFONE
> EMAIL
>
> NOME
> TELEFONE
>
> NOME
> TELEFONE
> EMAIL
>
> Quero formar um csv dele que fique "NOME,TELEFONE,EMAIL"
> Se não houver EMAIL, fique em branco
>
> Se usar
> grep -v "^$" | paste -d"," - - -
>
> Dá errado por que nem sempre tem 3 linha
>
> Sugestão? (acho que awk resolve, mas não sei fazer)
>
> --
> César Vianna
> -------------------
> Prefira o que é positivo e múltiplo; a diferença à uniformidade; o fluxo às
> unidades; os agenciamentos móveis aos sistemas.
> Gilles Deleuze & Felix Guattari
> ******************************************************
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
--
Jose Edson Moreno Jr.
[As partes desta mensagem que não continham texto foram removidas]