Isso funciona bem, caso vc queria remover todas as virgulas.
Veja este exemplo:
$ cat sql.txt
CREATE TABLE FW (
did DECIMAL(3),
nomeVARCHAR(40),
UNIQUE(nome),
);
CREATE TABLE LALA (
kk VARCHAR(80),
ll BLOB(99),
ef INTEGER(5),
ID REAL(9),
);
Por que usar SED nesses casos???
:-)
Abraćo,
Ricio
[EMAIL PROTECTED]:~/temp$ brinq=`cat brinquedo`; echo -e
"VELHO:\n\n${brinq}\n\n";echo -e "NOVO:\n\n${brinq//),/)}\n\n";
VELHO:
CREATE TABLE FW (
did DECIMAL(3),
nomeVARCHAR(40),
UNIQUE(nome),
);
NOVO:
CREATE TABLE FW
aprimorei um pouquinho para caso nao seja extamente a linha
antecessora do }; que tem a virgula aser apagada .
tac teste | sed '/)\;/{
:find
N
s/\,//g
t
b find
}
' | tac
primeiro , como queremos o a primeira "," antes do "};" , invertemos o
arquivo [tac]
quando ele achar o "};" ['/)\;/] , primeir
server assim ?
levei em consideracao que eh para ser apagado todos ',' que estao antes do '};'
[EMAIL PROTECTED] scripts]# cat teste
CREATE TABLE FW (
did DECIMAL(3),
nomeVARCHAR(40),
UNIQUE(nome),
);
[EMAIL PROTECTED] scripts]# tac
On Thursday 15 December 2005 20:47, Reinaldo Carvalho wrote:
[cut]
> Gostaria de saber porque o sed abaixo nao funcionou?
[...]
> sed -e 's/,\n)/\n)/g'
[cut]
A explicação tá aqui:
http://aurelio.net/sed/sed-HOWTO.html#toc12
até,
Herbert.
---