simple remplacement blah
:
$ sed -e 's/\[[^]]*_blah]/[Blah]/g' old.sql > new.sql
Plus générale:
$ perl -pe 's/\[[^]_]+_(.+?)]/[\u$1]/g' old.sql > new.sql
La raison pour correspondre au préfixe [^]_]+
plutôt que .+
est quantificateurs régulière d'expression sont avides. Par exemple, ce dernier, lorsqu'il reçoit [xx_blah][xx_blah]
comme entrée, engloutirait autant que possible et correspondrait à xx_blah][xx
, et non à ce que vous vouliez. L'exclusion du support droit et du soulignement est un arrêt de sécurité.
Le \u
dans le remplacement est un escape sequence qui majuscules la lettre suivante.
Si vous préférez sed et vos yeux ne se pas croisés de tous les anti-slash, rendez-vous avec
$ sed -e 's/\[[^]_]\+_\(.\+\?\)]/[\u\1]/g' old.sql > new.sql
aucun de ces Ça a l'air de marcher? pourrait-il être parce que le fichier a été créé sur une machine Windows? (spacing? tabs? newline?) – mrblah
La sortie de 'diff -ub old.sql new.sql' était-elle vide? –