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

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

Re: RES: [shell-script] sed - substituir \n


From: SuSE List
Subject: Re: RES: [shell-script] sed - substituir \n
Date: Mon, 6 Dec 2004 23:17:16 -0200 (BRST)
User-agent: SquirrelMail/1.4.2

Grande Mago Julio!!!!!

Salve!!!!

Usei seu comando e aparece apenas isso:

2004-11-02;19:20:24;15129464F9;suse_list;mispo.com.br;cyrus;sent$
2004-11-02;19:20:59;2360C462FE;monica;luxury.com.br;cyrus;sent$
2004-11-02;19:21:02;C7ECF4611D;josinaldo;techpower.com.br;cyrus;sent$

O que eu quis passar foi o seguinte:

Como eu tenho este arquivo, com estas entradas:

2004-10-01;00:30:58;08ECA3936C;suse_list;mispo.com.br;cyrus;sent
2004-10-01;00:39:11;B7D013936C;suse_list;mispo.com.br;cyrus;sent

Eu rodo um programa em php que separa campo a campo usando como IFS=;
ficando assim:

c1 = 2004-10-01
c2 = 00:30:58
.....
c7 = sent

Gravo isso num banco MySQL, até aqui ok.

O problema é que, o ultimo campo, por ser final de linha, tem o caracter
"\n" ou "$" como voce me mostrou com o parâmetro -vet do cat e não sei
porque, na hora que gravo no banco, o campo c7 esta levando junto com o
conteudo da variável, no caso c7 = "sent", o caracter de final de
linha....eu tentei remover com o sed, usando 's/\n//g' mas não obtive o
resultado esperado...o MrBits me deu um help com um script maneiro...mas
acabei transformando meu arquivo com varias linhas num arquivo com uma
unica linha que "bagunçou" minha rotina de carga...fiquei com algo assim:

2004-10-01;00:30:58;08ECA3936C;suse_list;mispo.com.br;cyrus;sent2004-10-01;00:39:11;B7D013936C;suse_list;mispo.com.br;cyrus;sent

e estou com esta incognita...não consigo remover o caracter "$" (new line)
sem perder minha formatação de arquivo (varias linhas contendo 7 campos
por linha)

O MrBits resolveu me dar um help em PVT, até para não sair do foco da
lista, como nós acabamos saindo...por isso peço desculpas a todos...

em todo o caso, eu coloquei no meu shell que extrai as informações que
preciso de uma log de e-mail do postfix, que inserisse mais um ";" no
final de cada linha

2004-10-01;00:30:58;08ECA3936C;suse_list;mispo.com.br;cyrus;sent;
2004-10-01;00:39:11;B7D013936C;suse_list;mispo.com.br;cyrus;sent;

assim minha rotina de carga, trata dos 6 primeiros campos e descarta o
último, por consequencia, ele não leva o "\n"....

Não sei o que fazer....por isso estou quebrando a cuca para entender o
porquê dos scripts levarem o "$" (new line) junto com o conteudo da
variável...não dá pra substituir o "$" por um "vazio" ou seja sed
's/^$//g' (acho que é assim a regexp) e manter a quebra de linha do
arquivo?

[]s

Vinicius

>
> Vinicius,
> não entendi o que vc queria. Será alguma sujeira no final do registro?
> Faça
> cat -vet arquivo, se aparecer algum caracter entre o sent e o $ que
> aparecerá no lugar do newline, use o sed, mas da seguinte maneira:
>
> suponha que vc tenha que remover os 2 últimos caracteres sed 's/..$//'
> arquivo > outro_arquivo
>
> :wq
> Julio Cezar Neves
> - Programa de Software Livre -
> Tel:+55 21 2528-7070 / +55 21 8112-9988
> Fax: +55 21 2528-7646
> mailto:address@hidden
>
>
> | -----Mensagem original-----
> | De: SuSE List [mailto:address@hidden]
> | Enviada em: segunda-feira, 6 de dezembro de 2004 12:53
> | Para: address@hidden
> | Assunto: [shell-script] sed - substituir \n
> |
> |
> |
> | Pessoal,
> |
> | Estou quebrando a cuca aqui e até agora não consegui entender
> | onde estou
> | errando....
> |
> | eu tenho um arquivo com as seguintes entradas:
> |
> | 2004-10-01;00:30:58;08ECA3936C;suse_list;mispo.com.br;cyrus;sent
> | 2004-10-01;00:39:11;B7D013936C;suse_list;mispo.com.br;cyrus;sent
> |
> |
> | Até aqui eu gero este arquivo via shell normalmente....uso um
> | script em
> | php para dar carga num banco MySQL e tal....tudo maravilha....quando
> | busco no meu banco, via query sql, o ultimo campo (sent) eu não trago
> | nada na query, se executo a query com a opção de campo =
> | sent\n , ele me
> | traz todos os registros.....
> |
> | Já tentei processar este meu arquivo com o sed, usando:
> |
> | # sed 's/\n//g' < arquivo_entrada > arquivo_saida
> |
> | e continuo gravando no banco a última variável com o "\n" no
> | final.....
> |
> | e ai fica a dúvida: onde estou errando na substituição do caracter \n
> | (new line)????
> |
> | alguém pode me ajudar???
> |
> | []s
> |
> | Vinicius
> |
> |
> |
> | ---------------------------------------------------------------------
> | 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
> ---------------------------------------------------------------------
>
> 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
> ---------------------------------------------------------------------
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>
>



reply via email to

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