SED pour un formatage précis de fichier

Résolu
arkard7 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je cherche comment utiliser sed pour formater un fichier de la forme suivante :

[url : jdbc:mysql://XX.XX.XX.XX:3306/
active : 0
idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/
active : 0
idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/
active : 0
idle : 8

J'aimerais soit ajouter le texte de la 1ere ligne avant les lignes active et idle (pour pouvoir parser avec un grep après les connexions actives en fonction de lIP de la BDD correspondante et les connexions en Idle) ou enlever le retour chariot sur les 2 lignes suivantes à la ligne [url etc... puis faire de suite toutes les 3 lignes.

Le but est de pouvoir parser les lignes active et idle pour chaque IP de BDD du fichier.

Je me retourne la tête depuis un moment et ai regardé sur le net mais n'arrive pas à un résultat satisfaisant.

Merci d'avance !

A voir également:

4 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ awk '/url/ {x=$0};/active/ {xx=$0};/idle/{print x,xx,"/",$0}' a2
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 / idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 / idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 / idle : 8 
$  
1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Merci de poster un exemple précis de ton fichier en sortie :

Avant => Après

;-))
0
arkard7 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
[url : jdbc:mysql://XX.XX.XX.XX:3306/
active : 0
idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/
active : 0
idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/
active : 0
idle : 8

qui donnerait ceci sachant que le XX correspond à la ligne précédente pour le "active" et à la deuxième ligne précédente pour l'"idle".

[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0
[url : jdbc:mysql://XX.XX.XX.XX:3306/ idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0
[url : jdbc:mysql://XX.XX.XX.XX:3306/ idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0
[url : jdbc:mysql://XX.XX.XX.XX:3306/ idle : 8

Ou alors

[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 / idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 / idle : 8
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 / idle : 8

J'espère etre à peu près clair.
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
 sed 'N;N;s#\n# | #g' fichier
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
sed '/url :/{h;N;s#\n# #g;G;N;s#\n# #2}'  fichier
0
arkard7 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Magique !!! Ca marche ! Je l'aurais pas trouvé celle-la !
Serait-ce trop demander d'avoir l'autre cas de figure, si c'est possible ? En ajoutant l'url correspondante à l'active et à l'idle ?
Merci encore.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
$ awk '/url/ {x=$0};/active/ {print x,$0};/idle/{print x,$0}' fichier
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 
[url : jdbc:mysql://XX.XX.XX.XX:3306/ idle : 8 
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 
[url : jdbc:mysql://XX.XX.XX.XX:3306/ idle : 8 
[url : jdbc:mysql://XX.XX.XX.XX:3306/ active : 0 
[url : jdbc:mysql://XX.XX.XX.XX:3306/ idle : 8  
$  
0
arkard7 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Trop fort !!! Serait-ce encore trop demander de me fournir une petite explication rapide ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
/url/ {x=$0}
si la ligne contient url, on la stocke dans x
;/active/ {print x,$0}
si la ligne contient active, on imprime x contenant l'url puis la ligne
/idle/{print x,$0}
même chose pour la ligne contenant  idle
0
arkard7 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci infiniment.
0