Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/02/2012, 00h39   #1
Membre du Club
 
Avatar de theclem35
 
Homme Clément
Technicien Réseaux & Télécommunications
Inscription : décembre 2007
Messages : 148
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Activité : Technicien Réseaux & Télécommunications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : décembre 2007
Messages : 148
Points : 49
Points : 49
Par défaut Un petit peu d'aide sur sed :)

Salut,

J'ai le texte suivant :
Code :
192.168.1.7	http://www.developpez.net/forums/login.php?do=login&test=1	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 2608895, TSecr 182343795,SEQ/ACK analysis,POST /forums/login.php?do=login HTTP/1.1\r\n,Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n,\r\n,vb_login_username=theclem35&vb_login_password=******&s=&securitytoken=********&do=login&vb_login_md5password=&vb_login_md5password_utf=
Je souhaite supprimer la chaine
Code :
No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 2608895, TSecr 182343795,SEQ/ACK analysis,POST /forums/login.php?do=login HTTP/1.1\r\n,Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n,\r\n,
et remplacer tous les & (seulement APRES l'url) par des \n.

J'utilise la commande
Code :
sed 's/\tNo-Op.*\\r\\n,\\r\\n,/\n/g; s/&/\n/g'
qui me donne un bon résultat sauf que les & sont remplacés dans tout le fichier.
Comment lui faire remplacer que depuis le No-Op ? Ou bien plus simple, depuis la deuxième tabulation ? De même je pourrai modifier la commande pour supprimer la ligne parasite à partir de cette deuxième tabulation.

Ca serait d'ailleurs plus pratique car la ligne parasite ne commence pas toujours pas No-Op...

Merci!!
theclem35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 09h18   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
Ou bien plus simple, depuis la deuxième tabulation ? De même je pourrai modifier la commande pour supprimer la ligne parasite à partir de cette deuxième tabulation.
Code :
sed 's/\(.*\)\t.*\\n,\(.*\)/\1 \2/'
Citation:
sauf que les & sont remplacés dans tout le fichier.
Parce qu'il faut cibler ta ligne, soit par son numéro de ligne, soit par un motif :

__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 12h29   #3
Membre du Club
 
Avatar de theclem35
 
Homme Clément
Technicien Réseaux & Télécommunications
Inscription : décembre 2007
Messages : 148
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Activité : Technicien Réseaux & Télécommunications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : décembre 2007
Messages : 148
Points : 49
Points : 49
Salut,

Et si dans ce cas précis, il n'y a qu'une seule ligne (puisque c'est un flux), et que le motif serait la deuxième tabulation de cette ligne ?
Cela ne fonctionne pas !
Code :
sed '/\(.*\)\t,\(.*\)/\1 \2/ s/&/\n/g''
theclem35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 13h20   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Parce que le "motif" cible la ligne et pas seulement une partie de la ligne

J'ai jeté un oeil vite fait à la page de man de "tshark", et j'y a vu l'option "-E" :
Citation:
-E <field print option>
Set an option controlling the printing of fields when -T fields is selected.

Options are:

header=y|n If y, print a list of the field names given using -e as the first line of the output; the field
name will be separated using the same character as the field values. Defaults to n.

separator=/t|/s|<character> Set the separator character to use for fields. If /t tab will be used (this is
the default), if /s, s single space will be used. Otherwise any character that can be accepted by the
command line as part of the option may be used.

quote=d|s|n Set the quote character to use to surround fields. d uses double-quotes, s single-quotes, n no
quotes (the default).
Ne pourrais-tu pas essayer de t'en servir pour mieux cibler ta mise en forme ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 14h29   #5
Membre du Club
 
Avatar de theclem35
 
Homme Clément
Technicien Réseaux & Télécommunications
Inscription : décembre 2007
Messages : 148
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Activité : Technicien Réseaux & Télécommunications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : décembre 2007
Messages : 148
Points : 49
Points : 49
Malheuresement on a le choix seulement entre une tabulation ou un espace.
Ou encore 1 seul caractère. Donc pas de retour ligne, ce qui m'aurais arrangé!

Mais je touche au but. J'en suis à cette commande la :
Code :
tshark -i 3 -l -R "(http.request.method == \"POST\") && ((data-text-lines contains \"pass\") || (data-text-lines contains \"pwd\"))" -T fields -e ip.src -e http.request.full_uri -e text | sed "/^/{s//\n--------------------------- Nouvelles données ---------------------------\n\n/}; s/\(.*\)\t.*\\n,\(.*\)/\1\n\2/; s/&/\n/g"
Ce qui m'affiche
Code :
1
2
3
4
5
6
7
8
9
10
--------------------------- Nouvelles données ---------------------------

192.168.1.7     http://www.developpez.net/forums/login.php?do=login
vb_login_username=theclem35
vb_login_password=******
s=
securitytoken=*******
do=login
vb_login_md5password=
vb_login_md5password_utf=
Le problème c'est que si j'ai des & dans l'url, ils sont remplacés aussi.
Vu que je conserve le separator sous forme de tabulation, j'ai donc juste besoin de dire à ma substitution de &, de le faire qu'à partir du 2ème motif \t. C'est la où je bloque! (En sachant que tout est sur 1 seule ligne à la base)
theclem35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 17h20   #6
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Bon sans garantie, juste testé sur ton exemple précédent :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cat plop 
192.168.1.7	http://www.developpez.net/forums/login.php?do=login&test=1	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 2608895, TSecr 182343795,SEQ/ACK analysis,POST /forums/login.php?do=login HTTP/1.1\r\n,Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n,\r\n,vb_login_username=theclem35&vb_login_password=******&s=&securitytoken=********&do=login&vb_login_md5password=&vb_login_md5password_utf=

$ sed 's/\(.*\)\t.*\\n,\(.*\)/\1\n\2/;:z;s/\(.*\n\)\(.*\)&/\1\2\n/;tz' plop
192.168.1.7	http://www.developpez.net/forums/login.php?do=login&test=1
vb_login_username=theclem35
vb_login_password=******
s=
securitytoken=********
do=login
vb_login_md5password=
vb_login_md5password_utf=

$
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 18h17   #7
Membre du Club
 
Avatar de theclem35
 
Homme Clément
Technicien Réseaux & Télécommunications
Inscription : décembre 2007
Messages : 148
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Activité : Technicien Réseaux & Télécommunications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : décembre 2007
Messages : 148
Points : 49
Points : 49
Super ca marche impeccable, testé en local et en flux direct depuis internet

Pour en finir j'aurais souhaité arranger le traitement du mail (de l'autre post).
Il serait extremement plus simple de supprimer ce qui se trouve après la 3eme tabulation (un peu comme dans ce post) et de s'arreter à une premiere occurence connue.

Un exemple simple pour que ce soit plus lisible. Voici le message :
Code :
Chaine1	Chaine2	Chaine3	Chaine4-avec-du-texte-et-encore-du-texte-et-toujours-du-texte
Je souhaite supprimer ce qui se trouve entre la 3EME tabulation et la 1ERE chaine "texte".
Le résultat attendu serait :
Code :
Chaine1	Chaine2	Chaine3	-et-encore-du-texte-et-toujours-du-texte
J'ai essayé de faire ca en modifiant le code que tu m'as donné :
Code :
sed 's/\(.*\)\t.*texte\(.*\)/\1 \2/'
mais le problème c'est qu'il commence à supprimer à partir de la dernière tabulation et non la 3ème (c'est vrai que c'est pas trop dérangeant dans la mesure où la 3ème est aussi la derniere!), et surtout qu'il ne s'arrete pas au PREMIER "texte" mais au DERNIER
theclem35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2012, 19h18   #8
Membre du Club
 
Avatar de theclem35
 
Homme Clément
Technicien Réseaux & Télécommunications
Inscription : décembre 2007
Messages : 148
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France, Vendée (Pays de la Loire)

Informations professionnelles :
Activité : Technicien Réseaux & Télécommunications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : décembre 2007
Messages : 148
Points : 49
Points : 49
Trouvé avec
Code :
's/[^\t]*texte\([^\t]*texte[^\t]*texte\)/\1/'
theclem35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h59.


 
 
 
 
Partenaires

Hébergement Web