Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[AWK] recuperer la ligne du dessous

3 réponses
Avatar
Stef(tm)
Bonjour,

Un petit soucis dans un script :

Je recupere des fichiers de config qui comportent les lignes suivantes
:

Partition Name=3DC:
Partition Size=3D8.78
Partition FreeSpace=3D5.29
Partition Name=3DE:
Partition Size=3D19.53
Partition FreeSpace=3D19.44
Partition Name=3DF:
Partition Size=3D19.53
Partition FreeSpace=3D19.41

Je dois recuperer (sous cygwin) le lecteur, la taille et eventuellement
l'espace libre... Pour le lecteur, un grep "Partition Size" <fichier> |
awk -F"=3D" '{print $2}' fait tres bien l'affaire.

Mais comment avoir un truc du style : C:; 8.78; 5.29; E:;
19.53;...etc... ?

Je verrais bien un getline quelque part mais je ne vois pas du tout
comment l'utiliser...

Une id=E9e ?

3 réponses

Avatar
Thomas Baruchel
Je verrais bien un getline quelque part mais je ne vois pas du tout
comment l'utiliser...


Un flag ? Tu crées une variable contenant 0 ou 1 ; la première ligne
l'active, stocke éventuellement de l'information, puis la ligne suivante,
voyant que le flag est à 1 finit le traitement, remet tout à 0.

Vois plus précisément selon tes besoins, mais AWK permet de le faire
sans problème, il suffit de stocker l'information dans des variables.

--
Thomas Baruchel --- Home Page: http://baruchel.free.fr/~thomas/
write to baruchel at the host called bluebottle dot com
écrire à baruchel chez l'hôte nommé bluebottle point com
(you will be asked for a confirmation the first time you write)

Avatar
TiChou
Dans le message <news:,
*Stef(tm)* tapota sur f.c.o.unix :

Bonjour,


Bonjour,

Je recupere des fichiers de config qui comportent les lignes
suivantes :

Partition Name=C:
Partition Size=8.78
Partition FreeSpace=5.29
Partition Name=E:
Partition Size.53
Partition FreeSpace.44
Partition Name=F:
Partition Size.53
Partition FreeSpace.41

Je dois recuperer (sous cygwin) le lecteur, la taille et eventuellement
l'espace libre...

Mais comment avoir un truc du style : C:; 8.78; 5.29; E:;
19.53;...etc... ?


Une solution, peut être pas la plus propre, mais efficace si les fichiers
respectent bien le format décrit précédemment :

$ awk -F= '/^Partition (Name|Size|FreeSpace)=/
{ printf "%s; ", $2 }' fichier

On peut éventuellement rajouter le block END { printf "n" } après le
premier block.

--
TiChou

Avatar
Stef(tm)
Super, et dire que je m'emm*rdais avec un getline...:-|

Merci