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

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

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


From: SuSE List
Subject: Re: RES: RES: [shell-script] sed - substituir \n
Date: Tue, 07 Dec 2004 16:43:48 -0200
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.2) Gecko/20040803

Fala Julio!!!!

Que a força esteja com você! Beleza, vou retirar o mago, mas até o lado 
negro da força tem medo do que você faz com shell... :-P

Bom, nosso amigo MrBits me ajudou pacas e conseguimos resolver meu 
problema todo via shell mesmo.....nem preciso mais do meu arquivo de 
carga .php..

esta clausula matou dois coelhos com uma unica flecha!

msptst2:/home/vinicius/pflog # mysql -uvinicius -psenha -e "LOAD DATA 
INFILE '/home/vinicius/pflog/remetente.txt' IGNORE INTO TABLE 
tb_remetente FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' 
(msg_data,msg_hora,msg_id,msg_usuario,msg_dominio,msg_size,msg_nrcpt)" 
pflogstats

Com o IGNORE da clausula, resolvemos os problemas que eu tinha com meus 
PKs e com a clausula toda eu sumi com umas 40 linhas de php alem deste 
método nao levar o "\n" junto com os campos....ehehehehe

Agora tá 10!!

[]s

Vinicius

Julio Cezar Neves - DATAPREVRJ wrote:

>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
>
>
>
>
> 
>
>
>
>
>---------------------------------------------------------------------
>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
>
>
>
>
> 
>
>
>
>
>
>  
>



[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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