Modifier le résultat affiché par une commande
bloomingdals
-
bloomingdals Messages postés 87 Statut Membre -
bloomingdals Messages postés 87 Statut Membre -
Bonjour,
le résultat d'une commande donnée m'affiche le résultat suivant:
(c'est juste un exemple le nombre de lignes retourné peut être très grand)
je voudrais faire en sorte que le résultat affiché à l'écran soit de cette forme:
je n'arrive pas à trouver la bonne expression régulière.
Merci d'avance de votre aide
le résultat d'une commande donnée m'affiche le résultat suivant:
2013-06-07 17:41:20.010 65070 -> 1300 0 391700 0 10 1769.978 1770
(c'est juste un exemple le nombre de lignes retourné peut être très grand)
je voudrais faire en sorte que le résultat affiché à l'écran soit de cette forme:
65070:1300:0:391700:0:10:1769.978:1770
je n'arrive pas à trouver la bonne expression régulière.
Merci d'avance de votre aide
A voir également:
- Modifier le résultat affiché par une commande
- Invite de commande - Guide
- Modifier dns - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Modifier liste déroulante excel - Guide
- Comment modifier un tableau sur word - Guide
4 réponses
Salut,
$ echo "${A}"
2013-06-07 17:41:20.010 65070 -> 1300 0 391700 0 10 1769.978 1770
$ echo "${A}" | awk 'BEGIN{OFS=":"}{print $3,$5,$6,$7,$8,$9,$10,$11 }'
65070:1300:0:391700:0:10:1769.978:1770
rebonjour,
La commande que tu m'a fourni a fonctionné parfaitement jusqu'à ce que la valeur de l'un des champs a été suffisament grandes pour qu'une unité de mesure apparaisse dans la ligne.
je m'explique, le champs $7 est le nombre d'octets reçu. Il est exprimé en bytes. Jusqu'ici pas de problèmes car tous les champs de ma ligne sont des réels.
Mais je me suis rendu compte que lorsque le nombre d'octets augmente, il s'exprime en Méa bytes au lieu de byte et la lettre M apparait.
Je voudrai modifier la commande de manière a concaténer les champs x et y si y est une lettre.
Comment je pourrais faire?
Merci
La commande que tu m'a fourni a fonctionné parfaitement jusqu'à ce que la valeur de l'un des champs a été suffisament grandes pour qu'une unité de mesure apparaisse dans la ligne.
je m'explique, le champs $7 est le nombre d'octets reçu. Il est exprimé en bytes. Jusqu'ici pas de problèmes car tous les champs de ma ligne sont des réels.
Mais je me suis rendu compte que lorsque le nombre d'octets augmente, il s'exprime en Méa bytes au lieu de byte et la lettre M apparait.
Je voudrai modifier la commande de manière a concaténer les champs x et y si y est une lettre.
Comment je pourrais faire?
Merci
Salut,
Il te faut rajouter un test à la commande.
Il te faut rajouter un test à la commande.
$ cat plop
2013-06-07 17:41:20.010 65070 -> 1300 0 391700 0 10 1769.978 1770
2013-06-07 17:41:20.010 65070 -> 1300 0 391700 M 0 10 1769.978 1770
2013-06-07 17:41:20.010 65070 -> 1300 0 391700 0 10 1769.978 1770
2013-06-07 17:41:20.010 65070 -> 1300 0 391700 M 0 10 1769.978 1770
$ cat script.awk
BEGIN{
OFS=":"
}
{
if($8 !~ /[[:digit:]]/){
print $3,$5,$6,$7$8,$9,$10,$11,$12
}
else
{
print $3,$5,$6,$7,$8,$9,$10,$11
}
}
$ awk -f script.awk plop
65070:1300:0:391700:0:10:1769.978:1770
65070:1300:0:391700M:0:10:1769.978:1770
65070:1300:0:391700:0:10:1769.978:1770
65070:1300:0:391700M:0:10:1769.978:1770