shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]