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

bloomingdals -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
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

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  3. bloomingdals
     
    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