J'ai r=E9cup=E9r=E9 des donn=E9es au format csv =E0 partir d'une base, mais=
la
mise
en forme est vraiment p=E9nible au sens ou les chaines de caract=E8res ne
sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les
virgules
=E0 l'int=E9rieur des chaines pour pouvoir choisir la virgule comme
s=E9parateur de champs.
Dans l'exemple, il faudrait supprimer la virgule apr=E8s Riri.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ALain Montfranc
Gamotte a écrit
Bonjour,
J'ai récupéré des données au format csv à partir d'une base, mais la mise en forme est vraiment pénible au sens ou les chaines de caractères ne sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les virgules à l'intérieur des chaines pour pouvoir choisir la virgule comme séparateur de champs. Dans l'exemple, il faudrait supprimer la virgule après Riri.
Merci.
Yves
sed 's/("[^,"]*),([^,"]*")/12/g'
Gamotte a écrit
Bonjour,
J'ai récupéré des données au format csv à partir d'une base, mais la
mise
en forme est vraiment pénible au sens ou les chaines de caractères ne
sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les
virgules
à l'intérieur des chaines pour pouvoir choisir la virgule comme
séparateur de champs.
Dans l'exemple, il faudrait supprimer la virgule après Riri.
J'ai récupéré des données au format csv à partir d'une base, mais la mise en forme est vraiment pénible au sens ou les chaines de caractères ne sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les virgules à l'intérieur des chaines pour pouvoir choisir la virgule comme séparateur de champs. Dans l'exemple, il faudrait supprimer la virgule après Riri.
Merci.
Yves
sed 's/("[^,"]*),([^,"]*")/12/g'
Jogo
Sur fr.comp.os.unix, ALain Montfranc disait :
sed 's/("[^,"]*),([^,"]*")/12/g'
Cette solution ne marche pas si il y a plus d'une virgule par champ. Je propose :
perl -pe 'while (s/("[^,"]+),([^"]+")/$1$2/g) {}'
Mais si il n'y a que des virgules entre les "guillemets" aucune substitution n'est effectuée.
-- pardon mais je suis oblige de faire ce test ici, et pas sur fr.test -+- L2 in www.le-gnu.net - Bien prendre les gens pour des cons -+-
Sur fr.comp.os.unix, ALain Montfranc disait :
sed 's/("[^,"]*),([^,"]*")/12/g'
Cette solution ne marche pas si il y a plus d'une virgule par champ.
Je propose :
perl -pe 'while (s/("[^,"]+),([^"]+")/$1$2/g) {}'
Mais si il n'y a que des virgules entre les "guillemets" aucune
substitution n'est effectuée.
--
pardon mais je suis oblige de faire ce test ici, et pas sur fr.test
-+- L2 in www.le-gnu.net - Bien prendre les gens pour des cons -+-
Cette solution ne marche pas si il y a plus d'une virgule par champ. Je propose :
perl -pe 'while (s/("[^,"]+),([^"]+")/$1$2/g) {}'
Mais si il n'y a que des virgules entre les "guillemets" aucune substitution n'est effectuée.
-- pardon mais je suis oblige de faire ce test ici, et pas sur fr.test -+- L2 in www.le-gnu.net - Bien prendre les gens pour des cons -+-
Stephane Chazelas
2007-06-01, 08:56(-07), Gamotte:
Bonjour,
J'ai récupéré des données au format csv à partir d'une base, mais la mise en forme est vraiment pénible au sens ou les chaines de caractères ne sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les virgules à l'intérieur des chaines pour pouvoir choisir la virgule comme séparateur de champs. Dans l'exemple, il faudrait supprimer la virgule après Riri. [...]
J'ai récupéré des données au format csv à partir d'une base, mais la
mise
en forme est vraiment pénible au sens ou les chaines de caractères ne
sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les
virgules
à l'intérieur des chaines pour pouvoir choisir la virgule comme
séparateur de champs.
Dans l'exemple, il faudrait supprimer la virgule après Riri.
[...]
J'ai récupéré des données au format csv à partir d'une base, mais la mise en forme est vraiment pénible au sens ou les chaines de caractères ne sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les virgules à l'intérieur des chaines pour pouvoir choisir la virgule comme séparateur de champs. Dans l'exemple, il faudrait supprimer la virgule après Riri. [...]
J'ai récupéré des données au format csv à partir d'une base, mais la mise en forme est vraiment pénible au sens ou les chaines de caractères ne sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les virgules à l'intérieur des chaines pour pouvoir choisir la virgule comme séparateur de champs. Dans l'exemple, il faudrait supprimer la virgule après Riri.
Est-ce que j'abuse en demandant des explications sur la commande perl ci-dessus ?
On 2 juin, 15:20, Stephane Chazelas <cette.adre...@est.invalid> wrote:
2007-06-01, 08:56(-07), Gamotte:
Bonjour,
J'ai récupéré des données au format csv à partir d'une base, mais la
mise
en forme est vraiment pénible au sens ou les chaines de caractères ne
sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les
virgules
à l'intérieur des chaines pour pouvoir choisir la virgule comme
séparateur de champs.
Dans l'exemple, il faudrait supprimer la virgule après Riri.
J'ai récupéré des données au format csv à partir d'une base, mais la mise en forme est vraiment pénible au sens ou les chaines de caractères ne sont mises entre guillemets que si elles contiennent des virgules.
exemple de ligne du fichier
Bob et Bobette, "Riri, Fifi et Loulou", Tintin et milou, ...
Comme je veux faire un traitement avec awk, je voudrais supprimer les virgules à l'intérieur des chaines pour pouvoir choisir la virgule comme séparateur de champs. Dans l'exemple, il faudrait supprimer la virgule après Riri.
Est-ce que j'abuse en demandant des explications sur la commande perl ci-dessus ?
Jogo
Sur fr.comp.os.unix, Gamotte disait :
perl -pe 's/".*?"/($a=$&)=~s@,@@g,$a/ge'
Est-ce que j'abuse en demandant des explications sur la commande perl ci-dessus ?
-pe => Pour chaque ligne de stdin interpréter le script donné en paramètre.
s/".*?"/.../ge => Substituer tout les occurences d'une chaine entre " (inclus) par le résultat de l'expression.
$a=$& => La variable $a contient l'occurence à transformer.
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par rien.
,$a => Retourner $a.
-- tout rapport sexuel de l'un ou l'autre avec un tiers devrait être considéré comme une expérience joyeuse et agréable que votre partenaire peut partager dans son coeur et parfois même physiquement
Sur fr.comp.os.unix, Gamotte disait :
perl -pe 's/".*?"/($a=$&)=~s@,@@g,$a/ge'
Est-ce que j'abuse en demandant des explications sur la commande
perl ci-dessus ?
-pe => Pour chaque ligne de stdin interpréter le script donné en
paramètre.
s/".*?"/.../ge => Substituer tout les occurences d'une chaine entre
" (inclus) par le résultat de l'expression.
$a=$& => La variable $a contient l'occurence à transformer.
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par
rien.
,$a => Retourner $a.
--
tout rapport sexuel de l'un ou l'autre avec un tiers devrait être
considéré comme une expérience joyeuse et agréable que votre partenaire
peut partager dans son coeur et parfois même physiquement
Est-ce que j'abuse en demandant des explications sur la commande perl ci-dessus ?
-pe => Pour chaque ligne de stdin interpréter le script donné en paramètre.
s/".*?"/.../ge => Substituer tout les occurences d'une chaine entre " (inclus) par le résultat de l'expression.
$a=$& => La variable $a contient l'occurence à transformer.
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par rien.
,$a => Retourner $a.
-- tout rapport sexuel de l'un ou l'autre avec un tiers devrait être considéré comme une expérience joyeuse et agréable que votre partenaire peut partager dans son coeur et parfois même physiquement
Gamotte
On 6 juin, 08:21, Jogo wrote:
Sur fr.comp.os.unix, Gamotte disait :
perl -pe 's/".*?"/($a=$&)=~s@,@@g,$a/ge'
Est-ce que j'abuse en demandant des explications sur la commande perl ci-dessus ?
[...]
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai bien compris, ce caractère équivaut à / (slash protégé), et il faut l'utiliser parcequ'on est déja dans une commande de substitution.
Merci
On 6 juin, 08:21, Jogo <j...@matabio.net> wrote:
Sur fr.comp.os.unix, Gamotte disait :
perl -pe 's/".*?"/($a=$&)=~s@,@@g,$a/ge'
Est-ce que j'abuse en demandant des explications sur la commande
perl ci-dessus ?
[...]
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par
rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai
bien compris,
ce caractère équivaut à / (slash protégé), et il faut l'utiliser
parcequ'on est déja
dans une commande de substitution.
Est-ce que j'abuse en demandant des explications sur la commande perl ci-dessus ?
[...]
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai bien compris, ce caractère équivaut à / (slash protégé), et il faut l'utiliser parcequ'on est déja dans une commande de substitution.
Merci
Jogo
Sur fr.comp.os.unix, Gamotte disait :
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai bien compris, ce caractère équivaut à / (slash protégé),
Non, ça ne marcherait pas avec /. En fait peu importe le caractère après le s. On n'utilise / que par habitude, mais on peut mettre n'importe quoi. Là comme on a une substitution dans une substitution, il faut utiliser 2 caractères différents. Personnellement j'aurais plutot utilisé : (par habitude et parce que @ a déjà une sinification en Perl).
-- Lorsque l'on a exclu de l'art le but de moraliser et d'améliorer les hommes, il ne s'en suit pas encore que l'art doive être absolument sans fin, sans but et dépourvu de sens, en un mot, l'art pour l'art. -- Nietzsche
Sur fr.comp.os.unix, Gamotte disait :
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par
rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai
bien compris,
ce caractère équivaut à / (slash protégé),
Non, ça ne marcherait pas avec /. En fait peu importe le caractère
après le s. On n'utilise / que par habitude, mais on peut mettre
n'importe quoi. Là comme on a une substitution dans une substitution,
il faut utiliser 2 caractères différents. Personnellement j'aurais
plutot utilisé : (par habitude et parce que @ a déjà une sinification
en Perl).
--
Lorsque l'on a exclu de l'art le but de moraliser et d'améliorer les
hommes, il ne s'en suit pas encore que l'art doive être absolument
sans fin, sans but et dépourvu de sens, en un mot, l'art pour l'art.
-- Nietzsche
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , par rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai bien compris, ce caractère équivaut à / (slash protégé),
Non, ça ne marcherait pas avec /. En fait peu importe le caractère après le s. On n'utilise / que par habitude, mais on peut mettre n'importe quoi. Là comme on a une substitution dans une substitution, il faut utiliser 2 caractères différents. Personnellement j'aurais plutot utilisé : (par habitude et parce que @ a déjà une sinification en Perl).
-- Lorsque l'on a exclu de l'art le but de moraliser et d'améliorer les hommes, il ne s'en suit pas encore que l'art doive être absolument sans fin, sans but et dépourvu de sens, en un mot, l'art pour l'art. -- Nietzsche
Gamotte
On 8 juin, 12:21, Jogo wrote:
Sur fr.comp.os.unix, Gamotte disait :
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , p ar rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai bien compris, ce caractère équivaut à / (slash protégé),
Non, ça ne marcherait pas avec /. En fait peu importe le caractère après le s. On n'utilise / que par habitude, mais on peut mettre n'importe quoi. Là comme on a une substitution dans une substitution, il faut utiliser 2 caractères différents. Personnellement j'aurais plutot utilisé : (par habitude et parce que @ a déjà une sinificati on en Perl).
OK, merci pour ces explications claires.
On 8 juin, 12:21, Jogo <j...@matabio.net> wrote:
Sur fr.comp.os.unix, Gamotte disait :
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , p ar
rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai
bien compris,
ce caractère équivaut à / (slash protégé),
Non, ça ne marcherait pas avec /. En fait peu importe le caractère
après le s. On n'utilise / que par habitude, mais on peut mettre
n'importe quoi. Là comme on a une substitution dans une substitution,
il faut utiliser 2 caractères différents. Personnellement j'aurais
plutot utilisé : (par habitude et parce que @ a déjà une sinificati on
en Perl).
(...) =~ s@,@@g => Dans $a remplacer toutes les occurences de , p ar rien.
D'accord. C'est surtout les '@' qui m'avaient perturbé. Donc, si j'ai bien compris, ce caractère équivaut à / (slash protégé),
Non, ça ne marcherait pas avec /. En fait peu importe le caractère après le s. On n'utilise / que par habitude, mais on peut mettre n'importe quoi. Là comme on a une substitution dans une substitution, il faut utiliser 2 caractères différents. Personnellement j'aurais plutot utilisé : (par habitude et parce que @ a déjà une sinificati on en Perl).