Script de substitution (vi et fin de ligne)
chasteigne
Messages postés
8
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
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...
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...
A voir également:
- Script de substitution (vi et fin de ligne)
- Partage de photos en ligne - Guide
- Script vidéo youtube - Guide
- Formulaire en ligne de meta - Guide
- Mètre en ligne - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
4 réponses
Salut,
Et avec sed :
Et avec sed :
sed -i.bak "
s/;/','/g
s/^/insert into TABLE ('/
s/?//g
s/^M/');/
" sql_fileMême si le "-i.bak" est sensé faire un backup du fichier original, teste avant sur un fichier bidon ;-))
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 " )
(j'ai essayé d'écrire " ^M " ou comme dans la commande " [Ctrl+V] puis Entrée " )
Alors il te faut passer par un fichier temporaire :
Sans l'option -i essaie :
PS. Ne pas tenir compte des sauts de lignes (bug du site) ;-((
sed 'blablabla' < fichier.in > fichier.outSinon ça à l'air de marcher ?
Sans l'option -i essaie :
sed "et vois déjà si les fins de lignes ont été modifiées...
s/;/','/g
s/^/insert into TABLE ('/
s/?//g
s/^M/');/
" sql_file | cat -A
PS. Ne pas tenir compte des sauts de lignes (bug du site) ;-((