Contenu | Rechercher | Menus

Annonce

Bientôt Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr dès maintenant

En cas de déconnexions intempestives, merci de vous connecter à partir de cette page en cochant la case « Me connecter automatiquement lors de mes prochaines visites ».

#1 Le 12/10/2012, à 21:36

sabnac
Membre

[RESOLU]Aide commande Sed

Bonjoue à tous!

J'ai besoin de votre aide sur une commande SED.

J'ai un fichier texte qui contiens du html, seule quelques chaines de caractères  m'interesse et je voudrais les extraire avec une commande sed.
par exemple j'ai la ligne suivante:

"author_name":"Paul","thread_name":"Paul","snippet":"texte_isoler\n","message":"texte_isoler\n",

Je veux le découper de la manière à obtenir ceci:
"snippet":"texte_isoler\n"

Je fais donc la commande sed suivante

sed -e 's/.*\("snippet":".*\),".*/\1/g' test
"snippet":"texte_isoler\n"

Le résultat est donc ok.
Maintenant je souhaiterais pouvoir obtenir ceci:

"author_name":"Paul" message":"texte_isoler\n"

Je n'y arrive pas, pourriez vous m'aider?


Merci d'avance

Dernière modification par sabnac (Le 13/10/2012, à 23:57)

Hors ligne

#2 Le 12/10/2012, à 21:57

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : [RESOLU]Aide commande Sed

La façon la plus propre de faire à mes yeux est :

sed 's/.*"author_name":"\([^"]*\)".*"snippet":"\([^"]*\)".*/"author_name":"\1" message":"\2"/' fichier

Hors ligne

#3 Le 12/10/2012, à 22:12

sabnac
Membre

Re : [RESOLU]Aide commande Sed

Merci nesthib pour cette réponse rapide. Je n'arrive pas à comprendre comment fonctionne la commande.

Pourrais tu me donner quelques explications? Notamment sur cette partie:
\([^"]*\)

Hors ligne

#4 Le 12/10/2012, à 22:41

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : [RESOLU]Aide commande Sed

[…] ← n'importe quel caractère parmi …
^… ← inversion du groupe … (donc ici, tout sauf un double guillemet)
…* ← 0 fois ou plus le caractère/groupe … précédent
\(…\) ← garde en mémoire l'expression trouvée qui correspond à …

en résumé, ça garde en mémoire dans \1 (ou \2) une suite de caractère qui ne comporte pas de « " » et qui est elle même entourée de ces guillemets "\([^"]\)"

Hors ligne

#5 Le 13/10/2012, à 22:37

sabnac
Membre

Re : [RESOLU]Aide commande Sed

Merci Nesthib. Maintennt je suis dans la deuxième phase de mon problème.


En effet j'ai un fichier texte de 34 M où le but est d'extraire ces deux chaînes de caractères à chaque fois qu'elles se présentent de la manière suivante:

"author_name":"Paul" message":"texte_isoler\n"
"author_name":"Paul" message":"texte_isoler\n"
"author_name":"Paul" message":"texte_isoler\n"
"author_name":"Paul" message":"texte_isoler\n"

Et cela n'a pas l'air de fonctionner. Je ne sais pas comment faire le traitement multiligne. J'ai bien tenté ce qui est expliqué sur le site suivant mais sans succès
http://www.siteduzero.com/tutoriel-3-28 … e-sed.html


Je peux encore solliciter ton aide et si possible ton explication?

Merci d'avance.

extrait

Hors ligne

#6 Le 13/10/2012, à 22:44

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 13/10/2012, à 23:57

sabnac
Membre

Re : [RESOLU]Aide commande Sed

En fait ça a fonctionné je me suis juste trompé de fichier à la relecture, probablement que le fait qu'il soit 1 heure du mat y est pour quelquechose big_smile

Merci encore nesthib:)

Hors ligne