[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] retirar apenas a ultima ocorrencia
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] retirar apenas a ultima ocorrencia |
Date: |
Wed, 30 Jan 2008 19:31:16 -0200 |
Vc poderia fazer algo como
(trocar a ultima virgula da linha por : )
$ echo "a,b,c,d" | sed -r 's/,([^,]+$)/:\1/'
a,b,c:d
$ echo "a,b,c,d" | rev | sed 's/,/:/' | rev
a,b,c:d
Se a sua instrução possui muitas linhas tem q fazer umas bruxarias --
mas vc pode transformar as quebras de linha em outro caracter
temporario :)
2008/1/30 Elvio Barbalho <address@hidden>:
>
>
>
>
>
>
> Senhores bom tarde, em uma varivel tenho a seguinte informacao
>
> a="update BRT_SCQF_EXECUCAO set DS_JOB = 'ope_bg_prorrata',ID_PROCESSO_UNIX
> = '22658',CO_PROCESSO = 704,DT_INICIO = sysdate,DT_FINAL =
> sysdate,QT_CLIENTE_OK = NULL,QT_CLIENTE_NOK = NULL,QT_ACCOUNT_OK =
> NULL,QT_ACCOUNT_NOK = NULL,QT_EVENTO_OK = NULL,QT_EVENTO_NOK =
> NULL,QT_CONTRATO_OK = NULL,QT_CONTRATO_NOK = NULL,QT_ARQUIVO_OK =
> NULL,QT_ARQUIVO_NOK = NULL,ATTR_1 = NULL,ATTR_2 = NULL,ATTR_3 = NULL,ATTR_4
> = NULL,CO_STATUS = 4,DS_INI_EXECUCAO = NULL,DS_FIM_EXECUCAO =
> NULL,DS_REFERENCIA = 200802,DS_CICLO = 003,where CO_EXECUCAO = 2"
>
> como podemos observar antes do comando where tem uma virgula. esta variavel
> e carregada dinamicamente e sempre esta sendo inserido a virgula antes do
> where, ja vi aki na lista instrucoes com o sed para retirar apenas uma
> determinada ocorrencia. O que estou precisando e algo que subistituisse a
> ultima ocorrencia da virgula por um espaco em branco que me retornasse algo
> do tipo
>
> update BRT_SCQF_EXECUCAO set DS_JOB = 'ope_bg_prorrata',ID_PROCESSO_UNIX =
> '22658',CO_PROCESSO = 704,DT_INICIO = sysdate,DT_FINAL =
> sysdate,QT_CLIENTE_OK = NULL,QT_CLIENTE_NOK = NULL,QT_ACCOUNT_OK =
> NULL,QT_ACCOUNT_NOK = NULL,QT_EVENTO_OK = NULL,QT_EVENTO_NOK =
> NULL,QT_CONTRATO_OK = NULL,QT_CONTRATO_NOK = NULL,QT_ARQUIVO_OK =
> NULL,QT_ARQUIVO_NOK = NULL,ATTR_1 = NULL,ATTR_2 = NULL,ATTR_3 = NULL,ATTR_4
> = NULL,CO_STATUS = 4,DS_INI_EXECUCAO = NULL,DS_FIM_EXECUCAO =
> NULL,DS_REFERENCIA = 200802,DS_CICLO = 003 where CO_EXECUCAO = 2
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"