[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [shell-script] Quebra de linha
From: |
Marcio Gil |
Subject: |
RE: [shell-script] Quebra de linha |
Date: |
Mon, 14 Dec 2009 23:25:58 -0200 |
Ops! Só funcionou porque o meu exemplo só tinha numerações nas
linhas pares :-D
Ao excluir uma das linhas não funciona:
$ cat temp.txt
123456
1-
asdfghj
2-
bnm,,.;
dfghjkl
3-
ertyuio
$ sed '/^[0-9]-$/!x;1d;$p;$x' temp.txt | sed 'N;s/-\n/-/'
1-123456
2-asdfghj
bnm,,.;
3-
dfghjkl
ertyuio
Agora assim funciona:
$ sed '/^[0-9]-$/!x;1d;$p;$x' temp.txt | sed '/^[0-9]-/{N;s/\n//}'
1-123456
2-asdfghj
bnm,,.;
3-dfghjkl
ertyuio
O comando N junta a linha atual com a linha seguinte no espaço de
trabalho, mas mantém o caracter \n. Mas como o \n agora faz parte da
área de trabalho, podemos manipulá-lo. No entanto como a linha
seguinte já foi juntada com a atual, na próxima iteração esta já não
será tratada, mas a que vem depois.
Explicando o segundo SED:
/^[0-9]-/{ # Se a linha contem a numeração:
N # Junta com a seguinte;
s/\n// # E remove o \n intermediário
}
Eduardo, não sei se eu me confundi e você realmente quer a numeração
pós-posta, no lugar de pré-posta.
Se for o caso agora fica fácil corrigir:
$ sed '/^[0-9]-$/!x;1d;$p;$x' temp.txt | sed
'/^[0-9]-/{N;s/^\([0-9]-\)\n\(.*\)$/\2 \1/}'
123456 1-
asdfghj 2-
bnm,,.;
dfghjkl 3-
ertyuio
Um abraço.
> -----Original Message-----
> From: Marcio Gil
>
> Acho que consegui:
>
> $ cat temp.txt
> 123456
> 1-
> asdfghj
> 2-
> bnm,,.;
> cvbnm,.
> dfghjkl
> 3-
> ertyuio
> $ sed '/^[0-9]-$/!x;1d;$p;$x' temp.txt | sed 'N;s/-\n/-/'
> 1-123456
> 2-asdfghj
> bnm,,.;
> cvbnm,.
> 3-dfghjkl
> ertyuio
> $
>
> Explicando:
>
> /^[0-9]-$/!x # Se a linha não é de numeração,
> # troca com o "hold space";
> 1d # Exclui a primeira linha,
> # Pois esta fica em branco;
> $p # Imprime a última linha;
> $x # E o que restou no "hold space".
>
> Para juntar as linhas eu descobri este site:
>
> http://thobias.org/doc/sosed.html#toc31
>
> Agora só falta juntar tudo num único sed :-)
>
>
> > -----Original Message-----
> > From: Marcio Gil
> >
> > Consegui fazer isto aqui:
> >
> > $ cat temp.txt
> > 123456
> > 1-
> > asdfghj
> > 2-
> > bnm,,.;
> > cvbnm,.
> > dfghjkl
> > 3-
> > ertyuio
> > $ sed '/^[0-9]-$/!x;1d;$p;$x' temp.txt
> > 1-
> > 123456
> > 2-
> > asdfghj
> > bnm,,.;
> > cvbnm,.
> > 3-
> > dfghjkl
> > ertyuio
> > $
> >
> > Quer dizer, pude colocar a numeração antes das linhas.
> >
> > Agora só falta juntar as linhas com numeração com as linhas
> > seguintes...
> > mas ainda não consegui. Alguem sabe como juntar estas linhas?
> >
> > já tentei assim:
> >
> > $ sed '/^[0-9]-$/!x;1d;$p;$x' temp.txt | sed 's/-\n//'
> >
> > mas não funciona :-(
> >
> > > -----Original Message-----
> > > From: Eduardo
> > >
> > > Senhores,
> > >
> > > tenho o seguinte problema:
> > >
> > > Tenho uma frase... <quebra de linha>
> > > 1-
> > >
> > > Toda vez que tiver uma frase e na linha seguinte aparecer um
> > > número seguido
> > > de traço "-" tenho que remover a quebra de linha e deixar
> > > tudo na mesma
> > > linha.
> > >
> > > Já tentei de tudo pelo SED mas não consegui.
> > >
> > > Antecipadamente obrigado.
> > >
> > > --
> > > ----------
> > >
> > >
> > > Eduardo
> > >
> > >
> >
> >
>
>
- Quebra de linha, Eduardo, 2009/12/14
- Re: [shell-script] Quebra de linha, miranda, 2009/12/14
- Re: [shell-script] Quebra de linha, Marcelo Andrade, 2009/12/14
- RE: [shell-script] Quebra de linha, Marcio Gil, 2009/12/14
- RE: [shell-script] Quebra de linha, Marcio Gil, 2009/12/14
- RE: [shell-script] Quebra de linha,
Marcio Gil <=
- RE: [shell-script] Quebra de linha, Marcio Gil, 2009/12/14
- Re: Quebra de linha, slackmonio, 2009/12/16
- Re: Quebra de linha, Marcio Gil, 2009/12/16
- Re: Quebra de linha, Marcio Gil, 2009/12/16
- Re: Quebra de linha, slackmonio, 2009/12/16