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

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

Re: [shell-script] Re: Transformar blocos de um texto em uma linha


From: Guilherme Gall
Subject: Re: [shell-script] Re: Transformar blocos de um texto em uma linha
Date: Fri, 6 Jun 2008 15:36:47 -0300

Flávio, vê se você pode me ajudar.

Tentei fazer aqui o que você sugeriu, mas veja o que acontece (vou
colar com prompt e tudo):

gmgall@giga08:~$ cat teste.txt
TRR
000000002
gmgall@giga08:~$ tr -d '\n' < teste.txt
gmgall@giga08:~$ l@giga08:~$

O comando foi feito exatamente como você descreveu, mas por alguma
razão recebi o texto de meu próprio prompt truncado como resposta.

Redirecionando para um arquivo e listando seu conteúdo com o cat
acontece a mesma coisa:

gmgall@giga08:~$ cat teste.txt | tr -d '\n' > teste2.txt
gmgall@giga08:~$ cat teste2.txt
gmgall@giga08:~$ l@giga08:~$

Engraçado é que abrindo o arquivo teste2.txt em um editor de texto a
resposta está lá como deveria estar (TRR000000002).

Usando o comando file ele diz que o arquivo não tem terminadores de linha.

gmgall@giga08:~$ file teste2.txt
teste2.txt: ASCII text, with no line terminators

Seria isso (a falta de terminadores de linha) que está causando a
resposta estranha no prompt? Não tenho nenhum problema parecido com o
do Eduardo para resolver, mas já tive esse problema outras vezes e
queria descobrir o motivo.

Obrigado,

Guilherme M Gall

2008/6/6 Flavio Junior <address@hidden>:
> Eduardo, boa tarde...
>
> $ é um metacaracter que indica fim-de-linha (EOL), mas não é realmente
> um conteudo no arquivo.
>
> No teu caso, teria que trocar o "\n" (de new-line).
>
> Podes fazer usando o tr
>
> $ tr -d '\n' < arquivo
>
> -d = delete, ou seja, apagar os \n, vai transformar tudo em uma linha só.
>
> --
>
> Flavio do Carmo Junior aka waKKu
>
> 2008/6/6 Eduardo de Paula <address@hidden>:
>> Boa tarde turma...
>>
>> Aproveitando a tread...
>>
>> tenho uma duvida.
>>
>> com um arquivo assim:
>>
>> TRR
>> 000002
>>
>> como fazer usando sed para juntar as duas linhas?
>>
>> TRR000002
>>
>> sed 's/TRR$/TRR/g' nao funfa pq? Não é só tirar a quebra de linha
>> depois de TRR?
>>
>> Obrigado.
>>
>> --- Em address@hidden, "Flavio Junior" <billpp@...>
>> escreveu
>>
>>>
>>> Ta um pouco confuso a ideia, mas tenta isso:
>>>
>>> # tr '\n' ';' < txt | sed 's/;;/\n/g'
>>>
>>> Ve se ajuda.
>>> Eu to entendendo que entre um dado7 e o novo Bloco tem uma linha em
>> branco.
>>>
>>> --
>>>
>>> Flávio do Carmo Júnior aka waKKu
>>>
>>>
>>> 2008/6/6 Petry <petrybr@...>:
>>> > Não...
>>> >
>>> > preciso pegar o numero do bloco no ***** Bloco X
>>> >
>>> > o X eh letra ou numero, e tens linhas onde o A é '
>>> >
>>> > dado3 , dado4 e dado6 nao tem ' '
>>> >
>>> > mas soh deixando cada bloco numa linha separada por ; ja dava pra
>> trabalhar
>>> > melhor no excel
>>> >
>>> > tipo
>>> > cat txt | sed '/Bloco/,/dado7/ { $ s/$/;}
>>> >
>>> > algo nesse estilo, da linha com Bloco até a linha com dado7, onde
>> tiver
>>> > final de linha ($) substituir por ;
>>> >
>>> > Att.,
>>> > JP
>>> >
>>> > 2008/6/6 Flavio Junior <billpp@...>:
>>> >
>>> >> lazlo:~# cat txt
>>> >> *********** Bloco 1
>>> >> dado1 'XXXXXXXXXX'H -- "'AAAAAAA" --,
>>> >> dado2 'AAAAAAAAA'H -- "XXXXXXXXXX" --,
>>> >> dado3 XX,
>>> >> dado4 XX,
>>> >> dado5 'XXXXXXXXXXXXXX'H -- "AAAAAA" --,
>>> >> dado6 XX,
>>> >> dado7 'XXXXXXXXXX'H -- "AAAAA" --,
>>> >> lazlo:~# grep -Eo 'X+' txt | paste -sd\;
>>> >> XXXXXXXXXX;XXXXXXXXXX;XX;XX;XXXXXXXXXXXXXX;XX;XXXXXXXXXX
>>> >> lazlo:~#
>>> >>
>>> >> seria isso?
>>> >>
>>> >> --
>>> >>
>>> >> Flávio do Carmo Junior aka waKKu
>>> >>
>>> >> 2008/6/6 Petry <petrybr@... <petrybr%40gmail.com>>:
>>> >>
>>> >> > Senhores,
>>> >> >
>>> >> > Tenho um arquivo onde blocos se repetem do tipo:
>>> >> >
>>> >> > *********** Bloco 1
>>> >> > dado1 'XXXXXXXXXX'H -- "'AAAAAAA" --,
>>> >> > dado2 'AAAAAAAAA'H -- "XXXXXXXXXX" --,
>>> >> > dado3 XX,
>>> >> > dado4 XX,
>>> >> > dado5 'XXXXXXXXXXXXXX'H -- "AAAAAA" --,
>>> >> > dado6 XX,
>>> >> > dado7 'XXXXXXXXXX'H -- "AAAAA" --,
>>> >> >
>>> >> > *********** Bloco 2
>>> >> > ( e tudo se repete.....)
>>> >> >
>>> >> > o que preciso é deixar os XXXX em uma linha separados por ; para
>>> >> > exportar
>>> >> > pro excel...
>>> >> >
>>> >> > 1;XXXXXXXXXX;XXXXXXXXX;XX;XX;XXXXXXXXXXX;XX;XXXXXXX
>>> >> > 2;XXXXXXXXXX;XXXXXXXXX;XX;XX;XXXXXXXXXXX;XX;XXXXXXX
>>> >> > (...)
>>> >> >
>>> >> > Usando o SED estou recebendo command garbled :(
>>> >> >
>>> >> > Alguma sugestão de como posso fazer?
>>> >> >
>>> >> > Att.,
>>> >> > JP
>>> >> >
>>> >> > [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
>
>
>


reply via email to

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