Perl est installé ? Sinon fais type perl et compare avec la première ligne du script #!/usr/bin/perl Gaetan wrote:
> 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] ] [ 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] ]