Pages : 1
#1 Le 12/10/2012, à 22:36
- sabnac
[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 14/10/2012, à 00:57)
Hors ligne
#2 Le 12/10/2012, à 22:57
- nesthib
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
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#3 Le 12/10/2012, à 23:12
- sabnac
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, à 23:41
- nesthib
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 "\([^"]\)"
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 13/10/2012, à 23:37
- sabnac
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, à 23:44
- nesthib
Re : [RESOLU]Aide commande Sed
peux-tu donner un extrait de ton fichier et expliquer clairement le résultat attendu ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 14/10/2012, à 00:57
- sabnac
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
Merci encore nesthib:)
Hors ligne