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

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

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


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: RES: [shell-script] sed - substituir \n
Date: Tue, 7 Dec 2004 13:41:31 -0300

Aê Vinícius,
não vem com essa estória de mago que não cola! Mago é coisa de Paulo Coelho!
Tô fora!!! :)))

Falando sério: ainda não entendi o seu problema. Vamos aos fatos:

1 - Sempre que vc extrair o new line vc fará uma tripa. Veja:
Prompt>  seq 9 | tr -d '\n'
123456789

2 - Vou fazer a mesma coisa que eu acho que vc querendo e não vejo nada de
errado. Observe:
Prompt> for ((i=1; i < 8; i++))
> do    
> echo "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" |
> cut -f$i -d';'
> done | cat -vet
2004-10-01$
2004-10-01$
00:30:58$
00:39:11$
08ECA3936C$
B7D013936C$
suse_list$
suse_list$
mispo.com.br$
mispo.com.br$
cyrus$
cyrus$
sent$
sent$

Repare que no exemplo acima coloquei 2 linhas (para vc ter certeza que
existe um \n) que vc mesmo me passou e o resultado foi o esperado. Coloquei
o cat -vet no final para que vc visse que todos os campos têm no final um
new line, senão, como disse antes seria uma tripa.

Amigo estou tentando ajudar, mas não estou atinando como. Me desculpe se
estou ficando burro, acho que vou pintar os cabelos para disfarçar. :)

: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 23:17
| Para: address@hidden
| Assunto: Re: RES: [shell-script] sed - substituir \n
| 
| 
| 
| 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;se
| nt2004-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
| >
| >
| >
| >
| >
| >
| >
| >
| >
| >
| 
| 
| 
| ---------------------------------------------------------------------
| 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]