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

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

Re: [shell-script] Colunas - como excluir?


From: Richard Bortolucci
Subject: Re: [shell-script] Colunas - como excluir?
Date: Thu, 13 Apr 2006 16:00:51 -0300

Putz! já precisei fazer isso uma vez, mas a quantidade de colunas variava...

Será que não tem nenhum parâmetro para inverter o print (imprimir exceto) do
awk? Deve ter algum jeito mais fácil de fazer isso...
===================================================
#!/bin/bash
exc=$(echo "$1"); #coluna que sera excluida
arq=colunas.txt

if [ "$#" -eq "1" ]; then
        while read l; do
                total=$(echo "$l" | awk '{print NF}');
                if [ "$exc" -eq 1 ] && [ "$total" -eq 1 ]; then
                        echo;
                else
                        for ((i=1;i<=$total;i++)); do
                                        todas=$(echo "$todas$i ");
                        done
                        mostrar=$(echo $todas | sed -e "s/$exc //" -e
"s/$exc$//" -e 's/ /\"\\t"$/g' -e 's/^/$/g' | sed 's/$$//');
                        unset todas;
                fi
                echo $l | awk "{print `echo "$mostrar"`}";
        done< <(cat $arq)
else
        cat $arq;
fi
===================================================

Exemplo de arquivo com as colunas:

01      02      03      04      05      06
11      12      13      14
21      22      23
31      32      33      34      35      36      37
41
===================================================

Não previ caracteres especiais nas colunas, nem caracteres separando
colunas, nem excluir mais que uma coluna de uma única vez.... não hora que
fiz era o que eu precisava.

Richard.

On 4/12/06, Fabricio Lopes de Souza <address@hidden> wrote:
>
> apenas um momento sem nada à fazer -.-
> //---------------------------------------------------
> #!/bin/bash
>
> if [[ $# -ne 3 ]] ; then
>    echo "Usage : $0 file \"colunas exluidas\" total_de_colunas"
>    exit 0
> fi
> file=$1
> excluded="$2"
> num_colum=$3
> num=1
> for i in $excluded ; do
>    included="$included $( seq $num $(expr $i - 1 ) )"
>    num=$(expr $i + 1)
> done
> included="$included $( seq $(expr $i + 1 ) $num_colum)"
> included=$(echo $included | sed "s/ /,/g")
> cut -d" " -f$included $file
> //---------------------------------------------------
>
> On 4/11/06, Tiago Barcellos Peczenyj <address@hidden> wrote:
> > Desculpe nao havia percebido, eh mesmo :$
> >
> > On 4/11/06, Julio Cezar Neves - DATAPREVRJ
> > <address@hidden> wrote:
> > >  Tiago, essa não vale, :)
> > >  o Gentil já havia postado. Além de rodar só no Linux, ainda precisa
> que
> > > este
> > >  seja das últimas (últimas mesmo!) releases. Por isso resolvi arriscar
> > > aquele
> > >  one-liner mixuruca.
> > >
> > >
> > >  [ ]s,
> > >  Julio Cezar Neves
> > >  Tel:+55 21 2555-6148 / +55 21 8112-9988
> > >  Fax: +55 21 2555-6154
> > >  http://www.julioneves.com
> > >
> > >
> > >  | -----Mensagem original-----
> > >  | De: Tiago Barcellos Peczenyj [mailto:address@hidden]
> > >  | Enviada em: terça-feira, 11 de abril de 2006 15:42
> > >
> > >  | Para: address@hidden
> > >  | Assunto: Re: [shell-script] Colunas - como excluir?
> > >  |
> > >  |
> > >  | On 4/11/06, Julio Cezar Neves - DATAPREVRJ
> > >  | <address@hidden> wrote:
> > >  | >  Não resisto a um one-liner, mesmo que fique uma porcaria :)
> > >  |
> > >  | Nem eu...
> > >  |
> > >  | $ cat arq.dat
> > >  | est49   est50   est51   est53   est54
> > >  | 1.409   1.231   1.281   1.102   1.078
> > >  | 1.409   1.231   1.281   1.102   1.078
> > >  |
> > >  | peczenyj@brpoatiago ~
> > >  | $ tr -s ' ' < arq.dat | cut --complement -d' ' -f 1,3,5
> > >  | est50 est53
> > >  | 1.231 1.102
> > >  | 1.231 1.102
> > >  |
> > >  | Eu imaginava que o cut tinha alguma opção para 'não pegar' alguma
> > >  | coisa, no info encontrei a opção '--complement' :
> > >  |
> > >  | "This option is a GNU extension.  Select for printing the
> complement
> > >  | of the bytes, characters or fields selected with the `-b', `-c' or
> > >  | `-f' options.  In other words, do _not_ print the bytes, characters
> or
> > >  | fields specified via those options.  This option is useful when you
> > >  | have many fields and want to print all but a few of them."
> > >  | --
> > >  | Tiago B Peczenyj
> > >  | Linux User #405772
> > >  |
> > >  | # cd /pub
> > >  | # more beer
> > >  |
> > >  |
> > >  |
> > > ---------------------------------------------------------------------
> > >  | 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
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > >  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
> > >
> > >
> > > Para visitar o site do seu grupo na web, acesse:
> > > http://br.groups.yahoo.com/group/shell-script/
> > >
> > > Para sair deste grupo, envie um e-mail para:
> > > address@hidden
> > >
> > > O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço
> do
> > > Yahoo!.
> >
> >
> > --
> > Tiago B Peczenyj
> > Linux User #405772
> >
> > # cd /pub
> > # more beer
> >
> >
> > ---------------------------------------------------------------------
> > 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
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> 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]