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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] melhorar script awk


From: Julio C. Neves
Subject: Re: [shell-script] melhorar script awk
Date: Fri, 22 Jun 2012 18:37:20 -0300

Fala Emerson,
estou fazendo sem testar e do jeito que fiz, realmente ele só colocará o
(|) no último. Experimente fazer assim:

$ sed 's/;/|/g;s/\r//;s/$/|||||||||||||||||/' < $1 | cut -f-$2 -d'|' |
xargs -i {}'|'

Abcs,
Julio

*
*



Em 22 de junho de 2012 18:10, Emerson Domingues Souto - H2M <
address@hidden> escreveu:

> **
>
>
> Hummm interessante ....
> Mas o echo no final inclui um pipe apenas na última linha do arquivo, não
> é ? Pelo menos foi assim que aconteceu no meu teste.
> E se eu quiser que todo final de linha termine com um pipe ?
>
>
> Emerson Domingues Souto
> Tecnologia da Informação
> Marítima Seguros S/A
> Fone: 11 3156-1017
>
> > -----Mensagem original-----
> > De: address@hidden [mailto:shell-
> > address@hidden] Em nome de Robson Alexandre
> > Enviada em: sexta-feira, 22 de junho de 2012 17:55
>
> > Para: address@hidden
> > Assunto: Re: [shell-script] melhorar script awk
> >
> > echo "$(
> > sed 's/;/|/g;
> > # Substitui ; por |
> >
> > s/\r//;
> > # Retira o ^M do MSDOS
> >
> > s/$/|||||||||||||||||/' $1
> > # Completa o final das linhas com "uma pá" (unidade de algum sistema
> > métrico) de "|"
> >
> > cut -f-$2 -d'|'
> > # Pega do primeiro campo até o $2 desejado com os | no final
> >
> > )|"
> > #Coloca mais um | no final de cada linha com o echo
> >
> > Att Robson Alexandre
> >
> >
> > Em 22 de junho de 2012 16:53, Emerson Domingues Souto - H2M <
> > address@hidden> escreveu:
> >
> > > **
> > >
> > >
> > > Julio,
> > >
> > > O comando tá dando erro:
> > >
> > > script.sh: 0403-057 Syntax error at line 1 : `<' is not expected.
> > >
> > > Rsrs, eu não entendi o que esse comando faz, vc pode dar uma
> > > explicação pra gente ?
> > > Vlw,
> > >
> > >
> > > Emerson Domingues Souto
> > > Tecnologia da Informação
> > > Marítima Seguros S/A
> > > Fone: 11 3156-1017
> > >
> > > > -----Mensagem original-----
> > > > De: address@hidden [mailto:shell-
> > > > address@hidden] Em nome de Julio C. Neves Enviada em:
> > > > sexta-feira, 22 de junho de 2012 15:49
> > >
> > > > Para: address@hidden
> > > > Assunto: Re: [shell-script] melhorar script awk
> > > >
> > > > Só pra fazer um one liner.... ;)
> > > >
> > > > $ echo "$(sed 's/;/|/g;s/\r//;s/$/|||||||||||||||||/' <<< $1 cut
> > > > -f-$2
> > > -d'|')|"
> > > >
> > > > Abcs,
> > > > Julio
> > > >
> > > > *
> > > > *
> > > >
> > > >
> > > >
> > > > Em 22 de junho de 2012 12:02, Emerson Domingues Souto - H2M <
> > > > address@hidden> escreveu:
> > > >
> > > > > **
> > > > >
> > > > >
> > > > > Pessoal,
> > > > >
> > > > > Eu tenho o script abaixo que recebe na entrada: nome_de_arquivo e
> > > > > quantidade_de_pipes.
> > > > >
> > > > > A saída é o conteúdo do arquivo colocando ou excluindo em cada
> > > > > linha a quantidade de pipes do parâmetro de entrada.
> > > > >
> > > > > Ah, o script também substitui os ";" por "|"
> > > > >
> > > > > Eu gostaria de substituir o while por um for e deixar o código
> > > > > mais enxuto, isso é possível ?
> > > > >
> > > > > QTD_PIPE=$2
> > > > >
> > > > > sed 's/;/|/g' $1 | sed 's/^M//g' | awk -F"|" -vOFS="|" '{ ATUAL =
> > > > > 0; QTD_PIPE = '$QTD_PIPE'; while (ATUAL < QTD_PIPE) { ATUAL ++;
> > > > > printf($ATUAL) "|";
> > > > > }
> > > > > printf "\n";
> > > > > }'
> > > > >
> > > > > Exemplo de como funciona o script:
> > > > >
> > > > > cat arquivo
> > > > >
> > > > > A;
> > > > >
> > > > > A;B
> > > > >
> > > > > A;B;C;D;E
> > > > >
> > > > > script.sh arquivo 3
> > > > >
> > > > > A|||
> > > > >
> > > > > A|B||
> > > > >
> > > > > A|B|C|
> > > > >
> > > > > Emerson Domingues Souto
> > > > >
> > > > > Tecnologia da Informação
> > > > >
> > > > > Marítima Seguros S/A
> > > > >
> > > > > Fone: 11 3156-1017
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram
> > removidas]
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > [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
> > > >
> > >
> > >
> > >
> >
> >
> > [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
> >
>
>  
>


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



reply via email to

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