Script de substitution (vi et fin de ligne)
chasteigne
Messages postés
8
Statut
Membre
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
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...
Configuration: SunOS 5.8
A voir également:
- Script de substitution (vi et fin de ligne)
- Fin windows 10 - Guide
- Partage de photos en ligne - Guide
- Fin de numericable - Accueil - Box & Connexion Internet
- Formulaire en ligne de meta - 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 ;-))
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) ;-((