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: Flavio Junior
Subject: Re: [shell-script] Re: Transformar blocos de um texto em uma linha
Date: Fri, 6 Jun 2008 16:13:09 -0300

Guilherme,

Posta aqui pra gente a saida do comando:

cat -vet teste.txt

Pode ser que teu arquivo nao tenha um "\n"...

--

Flavio do Carmo Junior

2008/6/6 Guilherme Gall <address@hidden>:
> 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]