[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: colunas lado a lado
From: |
jimmy |
Subject: |
Re: [shell-script] Re: colunas lado a lado |
Date: |
Mon, 5 Apr 2010 10:14:48 -0300 |
User-agent: |
Mutt/1.4.2.3i |
se o arquivo for pequeno[1] pode-se fazer em puro awk:
$ awk '/^\s*$/{p=1;getline}p==1{print h[++i],$0;delete h[i]}!p{h[NR]=$0}'
arquivo
[1] pequeno nesse contexto seria sua memória comportar pelo menos metade
desse arquivo.
On Fri, Apr 02, 2010 at 05:28:56PM -0300, Darlon Vasata wrote:
> Dá pra fazer com o awk:
>
> awk 'BEGIN[file="0"}/[^$]/{print >> "arq"file}/^$/{file++}' arquivo;
> paste arq*; rm arq*
>
> Em 02/04/2010, às 13:46, Sérgio escreveu:
>
> > O meu 'split' split (GNU coreutils) 7.4
> > não tem a opção -p, como fazer então?
> >
> > --- Em address@hidden, Darlon Vasata <darlonv@...>
> > escreveu
> > >
> > > Ops!
> > >
> > > Tinha entendido errado o problema no e-mail anterior.
> > >
> > > Segue ae uma solução:
> > >
> > > split -p '^$' arquivo ; paste xaa <(sed '1d' xab); rm xaa xab
> > >
> > >
> > >
> > > Em 01/04/2010, às 23:08, Kurt Kraut escreveu:
> > >
> > > > Aloha,
> > > >
> > > >
> > > > Eu e o Rodrigo Pinto bolamos a seguinte solução:
> > > >
> > > >
> > > >
> > > >
> > > > #!/bin/dash
> > > > input=$1
> > > > temporary1=$(mktemp)
> > > > temporary2=$(mktemp)
> > > > current_temporary=$temporary1
> > > >
> > > > while read line
> > > > do
> > > > if test -z $line
> > > > then
> > > > # echo Achei uma linha em branco.
> > > > current_temporary=$temporary2
> > > > else
> > > > echo $line >> $current_temporary
> > > > fi
> > > > done < $input
> > > > paste $temporary1 $temporary2
> > > >
> > > >
> > > > ### EOF ###
> > > >
> > > > Para poder usar, use: ./nomedoscript.sh input.txt
> > > >
> > > >
> > > > Abraços,
> > > >
> > > >
> > > > Kurt Kraut (listas@...)
> > > >
> > > > 2010/4/1 Sérgio <voyeg3r@...>
> > > >
> > > >>
> > > >>
> > > >> # tenho um arquivo assim:
> > > >> -------------8-----------------
> > > >> joao
> > > >> maria
> > > >> helena
> > > >>
> > > >> um
> > > >> dois
> > > >> tres
> > > >> -------------8-----------------
> > > >>
> > > >> como gerar uma saida assim:
> > > >> joao um
> > > >> maria dois
> > > >> helena tres
> > > >>
> > > >> Lembrando que há uma linha em branco entre os dois blocos de
> > texto
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------