Rechercher : dans
Par :

Script de substitution (vi et fin de ligne)

Dernière réponse le 16 jui 2009 à 11:09:56 chasteigne, le 15 jui 2009 à 18:19:36 
 Signaler ce message aux modérateurs

Bonjour,

j'ai écris un petit script pour créer un fichier de requette sql à partir d'un fichier .csv (export excel avec des séparateurs ";") :

#!/usr/bin/ksh

vi $csv_file << EOT
:%s/;/', '/g
:%s/^/insert into TABLE ('/
:%s/?/ /g
:%s/^M/');/
:write sql_file
EOT
exit 0

La ligne sensée substituer les fins de lignes en " '); " n'est pas lu correctement ("Input read error").
Alors que les autres substitutions marchent; et si je tape cette commande dans vi avec le même fichier cela marche...

Configuration: SunOS 5.8

Meilleures réponses pour « script de substitution (vi et fin de ligne) » dans :
Petit tuto sur VI/VIM VoirExtraits du tutoriel de VIM =============================================================================== B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.5.fr.2...
[vi/vim] Rechercher un mot VoirAfin de rechercher un mot sous Vi/Vim, il suffit de taper "/" ou "?", suivi du mot à rechercher afin de lancer la recherche respectivement vers le bas ou vers le haut. Une pression sur la touche "n" permet d'aller directement à l'occurence...
Sed - Introduction à SED - Part I VoirSED - The Stream EDitor - Part I Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED" un...
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...

1

jipicy, le 15 jui 2009 à 18:49:51

Salut,

Et avec sed :

sed -i.bak "
s/;/','/g
s/^/insert into TABLE ('/
s/?//g
s/^M/');/
" sql_file
Même si le "-i.bak" est sensé faire un backup du fichier original, teste avant sur un fichier bidon ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

chasteigne, le 16 jui 2009 à 11:01:00

Merci,

mais en faite l'option -i n'a pas l'air de passer

Répondre à chasteigne

3

chasteigne, le 16 jui 2009 à 11:06:52

Ce qui est étonnant c'est que quand je tape la commande la commande directement dans vi, cela marche.
(j'ai essayé d'écrire " ^M " ou comme dans la commande " [Ctrl+V] puis Entrée " )

Répondre à chasteigne

5

 jipicy, le 16 jui 2009 à 11:09:56

ou comme dans la commande " [Ctrl+V] puis Entrée "
Attention c'est CTRL V + CTRL M pour obtenir ^M... $ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

4

jipicy, le 16 jui 2009 à 11:09:35

Alors il te faut passer par un fichier temporaire :

sed 'blablabla' < fichier.in > fichier.out
Sinon ça à l'air de marcher ?

Sans l'option -i essaie :
sed  "

s/;/','/g
s/^/insert into TABLE ('/
s/?//g
s/^M/');/
" sql_file | cat -A
et vois déjà si les fins de lignes ont été modifiées...

PS. Ne pas tenir compte des sauts de lignes (bug du site) ;-((
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy