Rechercher : dans
Par :

[AWK] Remplacement particulier de caractères

Dernière réponse le 8 jun 2005 à 13:42:25 marco, le 8 jun 2005 à 10:25:53 
 Signaler ce message aux modérateurs

Bonjour!
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

Meilleures réponses pour « [AWK] Remplacement particulier de caractères » dans :
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Le remplacement de variables en shell Bash Voir=Le remplacement de variables= Introduction Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec...
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...
LaTeX - Table de caractères VoirSymboles mathématiques Symboles fléchés Lettres grecques Note : certains caractères n'apparaissent pas sous certains navigateurs (notamment certaines versions de Internet Explorer), ils sont remplacés par un carré, la...

1

 jipicy, le 8 jun 2005 à 13:42:25

Salut,

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]$
;-) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy