Supprimer contenu entre parenthéses

Résolu/Fermé
Seriesaddict - 16 févr. 2009 à 00:03
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 16 févr. 2009 à 01:23
Bonjour,

Je ne connais que très peu la programmation, mais je cherche à supprimer ce qui se trouve entre parenthèses dans un texte qui ressemble à ceci :
John (Richard)
Mac (Dude #1)
Jim (Gal)

pour arriver à ceci : John|Mac|Jim

Pourriez vous s'il vous plait m'indiquer la manipulation ?

Merci d'avance,

Charlie
A voir également:

6 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 févr. 2009 à 00:20
Sous linux cela se fait facilement avec vim. Mais heureusement pour toi vim existe aussi sous windows !
https://www.vim.org/download.php

Copie colle le texte en question dans vim (vim c'est juste un éditeur texte super évolué). Les ~ qui apparaissent signifient simplement qu'il n'y a pas encore de texte sur ces lignes. Tu dois donc voir un truc comme ça :
lucky (luke)
archibald (haddock)
tryphon (tournesol)
~
~
~
~
-- INSERTION --

Concrètement on va utiliser la fonction "dans tout le texte, remplacer par" de vim. De manière générale la syntaxe est :
:%s/ce_que_je_veux_changer/ce_par_quoi_je_remplace/

On peut éventuellement rajouter des options derrière le / (par exemple c pour demander confirmation ou g pour appliquer l'opération sur toute la ligne si plusieurs occurrences de ce_que_je_veux_changer figurent dans une même ligne), mais là on s'en fout.

L'avantage de vim sur un éditeur de texte classique c'est que cette fonction de remplacement comprend les expressions régulières. Un peu de lecture :
https://fr.wikipedia.org/wiki/Expression_rationnelle#Principes_de_base

Ici c'est ce que nous allons utiliser. Appuie sur la touche 'echap' (qui signifie que tu vas taper une formule magique qui apparaîtra au bas de la fenêtre) et tape ceci :
:%s/ *(.*)//

... puis appuie sur entrée. Si tu as tout suivi, ceci supprimera sur chaque ligne une suite d'espace ' *' suivie d'une parenthèse ouvrante '(', suivie de plusieurs caractères '.*', suivi d'une parenthèse fermante ')'. A ce stade on passe de :
lucky (luke)
archibald (haddock)
tryphon (tournesol)

à ceci :
lucky
archibald
tryphon

Maintenant on change chaque retour à la ligne (caractère spécial '\n') par une barre verticale en tapant la formule :
:%s/\n/|/

On obtient alors :
lucky|archibald|tryphon|
Il ne reste plus qu'à supprimer le | superflu et c'est gagné. Tu noteras que si ton fichier comporte des lignes vides, tu auras des suites de |. Mais encore une fois on peut régler tout ça en répétant autant de fois que nécessaire :
:%s/||/|/g

Si tu as à le faire plusieurs fois inutile de tout retaper, un simple "echap : flèche du haut" suffit à rappeler les dernières commandes que tu as tapé.

Note :
- si tu t'aperçois que tu t'es craqué tu peux revenir en arrière en appuyant sur échap puis sur u (undo). Pour le redo c'est ctrl r. Normalement les menus permettent aussi de le faire facilement
- pour sauver, encore une fois, tu peux passer par les menus, sinon la commande magique c'est ":wq" (write quit).
- pour quitter sans sauver ":q!"

Bonne chance
3
Bouou, on assume que je suis sur windows, c'est vilain...

Merci beaucoup pour votre réponse, j'essaye ça et je viens vous re remercier !
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 févr. 2009 à 00:26
En même temps à la fin de ton premier message :

Configuration: Windows Vista
Firefox 3.0


... me laisse raisonnablement penser que je ne me suis pas trompée ;-) Mais si tu es sous linux, toutes mes félicitations pour cet excellent choix ^^
0
Ah, bah je me suis fait avoir ...

Oui, je suis Vista, je vais pas aller jusqu'à dire que j'en suis fier, mais je le vis pas si mal que ça.
0
Ma touche échap ne veut rien savoir par contre...
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 févr. 2009 à 00:38
Concrètement la touche échap ne fait rien, sauf s'il y a marqué insertion en bas. C'est ce qui permet de faire comprendre à vim que tu ne vas pas taper du texte mais une commande. Donc pas de raison de s'affoler. Ta formule magique doit apparaître au bas de l'écran. N'oublie pas les ':'.
0
Très bien, j'ai "réussit"

Voilà mon résultat (problème d'espace):
Alan Dale| Carla Gugino| Constance Zimmer| Beverly D'Angelo| Damani Roberts| Brian Sher| Ben Hogestyn| Kelvin Han Yee| Blake Robbins| Nicole Pulliam

J'essayais de copier coller la ligne c'est pour ça que ça ne fonctionnais pas.

Est-ce possible de faire tourner vim comme un script qui me permettrait d'avoir un résultat sans mettre les lignes à chaque fois ?
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 févr. 2009 à 00:55
Oui sous linux. Sous windows peut être si tu appelles vim depuis un .bat. Là il faut lire la doc de vim. Note que sous linux si le but c'est de faire un script, tu ferais plutôt des sed qu'un appel à vim (le principe étant grosso modo le même, la syntaxe diffère juste un peu).

Je ne pense pas qu'il existe des outils équivalents directement sous windows (car windows n'arrive comme tu le sais pas à la cheville d'un bon vieux linux... pardon elle était facile), mais ça doit se trouver. Genre ici :
http://gnuwin32.sourceforge.net/packages/sed.htm

Pour voir comment utiliser sed :
https://linux.die.net/man/1/sed
https://www.google.com/search?q=man+sed&ie=utf-8&oe=utf-8&aq=t&rls=org.debian:fr:unofficial&client=iceweasel-a&gws_rd=ssl

Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Comme tu dis ouais :D

Merci pour ton temps en tout cas !
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
16 févr. 2009 à 01:23
De rien et bonne continuation :-)
0