sed et expression reguliere - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 09-08-2012 à 10:24:25
avec ton exemple
awk '/JSESSIONID/ { print $NF }' test.txt |
fonctionne
|
Marsh Posté le 09-08-2012 à 10:36:52
Merci ca fonctionne bien !! et moi qui pensait deja à faire un truc tordu !!! par contre je vais regarder du coté du man awk pour comprendre ce que ca fait exactement ! (surtout le $NF) !!
Marsh Posté le 09-08-2012 à 10:49:43
En résumé:
- le /JSESSIONID/ permet de filtrer uniquement la ligne qui nous intéresse
- $NF retourne le nombre de "champ" dans la ligne qu'il inspecte.
- Le champ qui t'intéresse étant le dernier, ça fait l'affaire, on le sort avec le print
Il y a peut être plus simple, plus propre/robuste. Dans l'exemple, ça fonctionne
Marsh Posté le 09-08-2012 à 16:24:00
Si je peux abuser O'gure, aurais tu une idee pour récuperer dans ce fichier :
Code :
|
Uniquement la chaine : <p>Le téléchargement des fichiers s'est déroulé sans erreur.</p> (avec ou sans la balise <p> </p> ???
Marsh Posté le 09-08-2012 à 16:46:05
Quelle est la logique ?
Première ligne après "<h1>Rapport de téléchargement</h1> " ?
Marsh Posté le 09-08-2012 à 16:52:50
oui ! en fait je recupere ce fichier avec curl, du coup pas possible de modifier la structure.
Marsh Posté le 09-08-2012 à 17:06:03
à l'arrache, il y a moyen d'optimiser
awk '/Rapport de t/ { getline; print $0 }' test.txt | awk ' {sub(/.\/p.*/, "" ); print}' | awk '{print substr($0,9)}'|sed s/.eacute\;/é/g |
La logique est :
Je récupère la ligne suivant "Rapport de t"
http://www.cyberciti.biz/faq/awk-p [...] ing-regex/
oggy:~/Documents/tmp$ awk '/Rapport de t/ { getline; print $0 }' test.txt |
J'extrais une première partie en me basant sur une expression régulière
http://superuser.com/questions/401 [...] -using-awk
oggy:~/Documents/tmp$ awk '/Rapport de t/ { getline; print $0 }' test.txt | awk ' {sub(/.\/p.*/, "" ); print}' |
J'enlève les 9 premiers caractères
http://star-www.rl.ac.uk/docs/sc4.htx/node38.html
oggy:~/Documents/tmp$ awk '/Rapport de t/ { getline; print $0 }' test.txt | awk ' {sub(/.\/p.*/, "" ); print}' | awk '{print substr($0,9)}' |
et pour remplacer é par é
oggy:~/Documents/tmp$ awk '/Rapport de t/ { getline; print $0 }' test.txt | awk ' {sub(/.\/p.*/, "" ); print}' | awk '{print substr($0,9)}'|sed s/.eacute\;/é/g |
Marsh Posté le 09-08-2012 à 17:16:55
Merci encore O'gure ! faut vraiment que je me mette à awk !!!
Marsh Posté le 09-08-2012 à 17:24:51
En un poil plus petit et sans sed:
awk '/Rapport de t/ { getline; |
Marsh Posté le 10-08-2012 à 09:25:18
o'gure a écrit : En résumé: |
C'est pas plutôt NF qui retourne le nombre de champs dans la ligne qu'il inspecte, $NF retourne la valeur du NFième champ
Marsh Posté le 10-08-2012 à 10:06:26
FranceDenBas a écrit : C'est pas plutôt NF qui retourne le nombre de champs dans la ligne qu'il inspecte, $NF retourne la valeur du NFième champ |
Si c'est ça
Désolé de mon approximation
Marsh Posté le 10-08-2012 à 23:09:50
o'gure a écrit : |
Y'a pas de mal.
Marsh Posté le 09-08-2012 à 09:29:01
Bonjour à tous,
Je cherche à recuperer une valeur stockée dans un cookie (cookie généré par curl lors de al connexion).
Mon cookie se presente sous cette forme
Je dois récupérer dans une variable la valeur de session (celle située après JSESSIONID
Je pense que sed ferait bien l'affaire, mais j'ai du mal à définir l'expression réguliere...
Il semblerait que cette chaine puisse être composée des caractères [A-Z][0-9] et qu'elle fasse 32 caractères de longueur
Pour la longueur je ne suis pas totalement sure.
Merci pour votre aide (encore !)