bon, �a marche pas, tout �a...
et j'ai oubli�, mais j'aimerais aussi remplacer les s�parateurs (|) par des
s�parateurs "virgule-espace"
j'ai awk mais j'aimerais que �a me sorte les r�sultats dans un fichier, plut�t
que dans le terminal...
et pour perl, �a me donne ces erreurs :
./scriptperl: @champs=(0,1,2,10,11,12,13): command not found
./scriptperl: line 4: syntax error near unexpected token `(<>)'
./scriptperl: line 4: `while (<>) {'
vu que je ne comprends pas tr�s bien le script, je qu�mande encore un peu
d'aide...
Le lun, 14 mai 2001, vous avez �crit :
> > 1- je voudrais rajouter du texte devant chaque ligne (le m�me texte devant
> > chacune des 36000 lignes). comment faire �a avec une commande bash, ou bien un
> > petit programme, je ne sais pas... un truc simple ?
>
> sed 's/^/blablabla/' < fichier > nouveau_fichier
> �videmment: remplace "blablabla" ;)
> Pour explication: ^ symbolise le d�but de la ligne.
> Cette ligne te permet donc d'ins�rer un texte quelconque au d�but de
> chaque ligne.
>
> Note qu'une alternative (mais probablement plus lente) serait:
> cat fichier | while read ligne; do
> echo "blablabla"$ligne
> done > nouveau_fichier
>
> > 2- ce fichier texte est une extraction de PostgreSQL avec un d�limiteur "|".
> > Mais pour le rentrer dans une autre base, j'ai besoin de mettre entre
> > apostrophes les champs caract�res (et seulement ceux l�).
> > qqn voit-il une fa�on simple de faire �a ?
> > voici une ligne pour exemple :
> >
> > 55001|ABAINVILLE |06|0.3|1367|8331|23971|8347|23974|305|5510|552|41|55130
> >
> > et voici ce qu'il faut que j'en fasse (les 3 premiers champs et les 4 derniers
> > sont au format varchar et en plus, le second champ contient des espaces) :
> >
> > '55001'|'ABAINVILLE
>'|'06'|0.3|1367|8331|23971|8347|23974|305|'5510'|'552'|'41'|'55130'
> >
> > si qqn est sp�cialiste de ce genre de bidouilles, je veux bien un p'tit coup de
> > main. et puis �a m'int�resse de savoir comment je peux faire �a simplement.
>
> Il me semble que awk est tout indiqu�:
>
> cr�e un fichier monscript, p.ex. dans /usr/local/bin:
>
> #!/usr/bin/awk -f
> BEGIN {
> FS="|"
> }
> {
> printf("'%s'|'%s'|'%s'|%s|%s|%s|%s|%s|%s|%s|'%s'|'%s'|'%s'|'%s'\n",
> $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14);
> }
>
>
> Mais finalement c'est peut-�tre mieux avec perl:
>
> #!/usr/bin/perl
>
> @champs=(0,1,2,10,11,12,13);
>
> while (<>) {
> chomp();
> @f = split('|');
> foreach $i (@champs) {
> $f[$i] = "'".$f[$i]."'";
> }
> $l = join('|', @f);
> print $l."\n";
> }
>
> -> tu sauves ca dans un fichier, p.ex.
> ~/bin/pgsql2mysql
>
> -> tu rends ce fichier �x�cutable:
> chmod +x ~/bin/pgsql2mysql
>
> Ensuite:
> ~/bin/pgsql2mysql < ancien_fichier > nouveau_fichier
>
> Evidemment, tes deux souhaits se laissent combiner: pour (en
> plus) afficher une cha�ne au d�but de chaque ligne, suffit de
> remplacer
> print $l."\n";
> par
> print "bla bla bla".$l."\n";
>
> --
> -o) / Pascal Bleser ATOS Payment Systems|
> /\\ \ C++/UNIX Development Aachen, Germany|
> _\_v \<[EMAIL PROTECTED]> <[EMAIL PROTECTED]>|
> ---------------------------------------------------|
> /earth is 98% full... please delete anyone you can.:
> ---------------------------------------------------'
>
> [ Soyez pr�cis dans vos sujets svp afin de d�terminer directement ]
> [ le type de demande... ]
> [ Pour vous (d�s)inscrire, aller sur http://linuxbe.org/ml.php ]
> [ http://LinuxBe.org Contact: [EMAIL PROTECTED] ]
[ Soyez pr�cis dans vos sujets svp afin de d�terminer directement ]
[ le type de demande... ]
[ Pour vous (d�s)inscrire, aller sur http://linuxbe.org/ml.php ]
[ http://LinuxBe.org Contact: [EMAIL PROTECTED] ]