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