Expression régulière pour modifer l'affichage d'une commande

Fermé
bloomingdals - 21 juin 2013 à 11:06
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 21 juin 2013 à 12:30
Bonjour,
je cherche une expression régulière avec sed qui me permet de transformer ces deux lignes:
Date first seen          Duration Proto            Src AS    Flows(%)     Packets(%)       Bytes(%)         pps      bps   bpp
2013-06-18 08:51:59.654  7140.215 any               37492    2.2 M(52.5)  346.4 M(50.1)   76.3 G(19.2)    48515   85.5 M   220

en ces deux lignes:
Src as:Bytes:packets:flows:pps:bps:bpp // ordre des colonnes voulu 
37492:76.3 G:346.4 M:2.2 M:48515:85.5 M:220


je précise que que les unité de mesures M et G n'aparaissent que si le nombre devient d'une valeur devient très grande (son apparition dépend de la valeur prise par le champs)

merci
A voir également:

3 réponses

dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
21 juin 2013 à 12:30
hello
permutter des champs est plus simple avec awk
$ awk -F "  +" '{OFS=":"; gsub("[(][^)]*[)]", ""); print $3, $6, $5, $4, $7, $8, $9}' fichier
Src AS:Bytes:Packets:Flows:pps:bps:bpp
37492:76.3 G:346.4 M:2.2 M:48515:85.5 M:220
$ 
1
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
21 juin 2013 à 11:16
Salut,

Tu aurais pu rester sur ton message précédent, qui je pense te donne tous les éléments pour arriver à tes fins, non ?
0
bloomingdals
21 juin 2013 à 12:04
Je l'ai cherché et je ne l'ai pas trouvé c'est pour cette raison que j'en ai posté un autre.
J'ai écrit une expression régulière avec sed mais à ce moment je n'avais pas des champs présentant des pourcentage (donc les parenthèses n'existait pas).
Je voudrais modifer l'expression pour qu'elles ignorent ce qu'il y'a entre paranthèse.

voici mon expression régulière:
sed -r 's/([^ ]* ){2} //;s/->//;s/ ([0-9])/:\1/g;s/ *:/:/g' | sed 's/^://'
0