[AWK] Remplacement particulier de caractères
marco
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour!
Merci encore de lire mon post
Mon problème :
J'ai une liste de lignes variables de la forme suivante :
Cette liste est relative au résultat d'un nmap.
Le problème vient du fait que le caractère séparateur est [ESPACE] car on le retrouve dans les types de matériel (ex: Western[ESPACE]Digital). Ce qui fait que lorsque je veux travailler avec awk ou sed sur cette liste, et bien le numéro du champ correspondant au type de materiel varie! exemple : sur la ligne 1 de mon exemple ci dessus, le type de machine correspond à $4, $5 et $6, alors que sur la ligne 2 il correspond à $3 et $4, et sur la ligne 4 il correspond à $3...
Egalement il est impossible d'utiliser les parentheses pour récupérer le type de materiel car il arrive que dans certaines lignes l'IP soit entourée aussi de parentheses...
Bref, je suis dans une impasse. J'ai essayé des commandes sed et awk mais je ne vois pas comment faire...
Par exemple j'ai essayé
mais cela remplace le type de machine par ([a-z]*_[a-z]*) (logique)
j'ai essayé également en sed
mais tous les [ESPACE] sont converti en '_' (logique aussi)...
Y a t il un moyen de n'appliquer un changement de caractere que dans une sous chaine définié par un expression régulière?
Pour être plus concret, par rapport à l'exemple ci-dessus, je souhaite arriver au résultat final suivant :
sachant que dans le type de machine, il peut y avoir 0, 1 ou n caractères [ESPACE].
Merci beaucoup de votre aide, cela fait 3 jours non-stop que je bosse dessus et ça devient très dur!!
bonne journée
Merci encore de lire mon post
Mon problème :
J'ai une liste de lignes variables de la forme suivante :
... nomdemachine (IP) MAC (WW Pcba Test) IP MAC (Western Digital) IP MAC (Western Digital) IP MAC (3com) ...
Cette liste est relative au résultat d'un nmap.
Le problème vient du fait que le caractère séparateur est [ESPACE] car on le retrouve dans les types de matériel (ex: Western[ESPACE]Digital). Ce qui fait que lorsque je veux travailler avec awk ou sed sur cette liste, et bien le numéro du champ correspondant au type de materiel varie! exemple : sur la ligne 1 de mon exemple ci dessus, le type de machine correspond à $4, $5 et $6, alors que sur la ligne 2 il correspond à $3 et $4, et sur la ligne 4 il correspond à $3...
Egalement il est impossible d'utiliser les parentheses pour récupérer le type de materiel car il arrive que dans certaines lignes l'IP soit entourée aussi de parentheses...
Bref, je suis dans une impasse. J'ai essayé des commandes sed et awk mais je ne vois pas comment faire...
Par exemple j'ai essayé
s/([a-z]* [a-z]*.*)/([a-z]*_[a-z]*)/
mais cela remplace le type de machine par ([a-z]*_[a-z]*) (logique)
j'ai essayé également en sed
/([a-z]* [a-z]*.*)/{
s/ /_/
}
mais tous les [ESPACE] sont converti en '_' (logique aussi)...
Y a t il un moyen de n'appliquer un changement de caractere que dans une sous chaine définié par un expression régulière?
Pour être plus concret, par rapport à l'exemple ci-dessus, je souhaite arriver au résultat final suivant :
... nomdemachine (IP) MAC (WW_Pcba_Test) IP MAC (Western_Digital) IP MAC (Western_Digital) IP MAC (3com) ...
sachant que dans le type de machine, il peut y avoir 0, 1 ou n caractères [ESPACE].
Merci beaucoup de votre aide, cela fait 3 jours non-stop que je bosse dessus et ça devient très dur!!
bonne journée
A voir également:
- [AWK] Remplacement particulier de caractères
- Remplacement coco - Accueil - Réseaux sociaux
- Meilleur site de vente entre particulier - Guide
- Coco.fr remplacement - Accueil - Réseaux sociaux
- Caractères spéciaux - Guide
- Caractères ascii - Guide
1 réponse
Salut,
Et si t'essayais tout simplement ça :
Et si t'essayais tout simplement ça :
awk -F "(" '{ print "("$NF }'Un exemple à partir de ton fichier :[jp@Mandrake tmpfs]$ cat fich.txt
nomdemachine (IP) MAC (WW Pcba Test)
IP MAC (Western Digital)
IP MAC (Western Digital)
IP MAC (3com)
[jp@Mandrake tmpfs]$ awk -F "(" '{ print "("$NF }' < fich.txt
(WW Pcba Test)
(Western Digital)
(Western Digital)
(3com)
[jp@Mandrake tmpfs]$;-)