comment obtenir le nombre maximum d'un fichier avec des scripts shell Linux bash
Comment obtenir le maximum de "taux" et de la "log2c" valeur à partir d'un fichier comme suit?
e.g: le débit max est 89.5039 , et log2c 3.0 . merci beaucoup.
log2c=5.0 rate=88.7619
log2c=-1.0 rate=86.5412
log2c=11.0 rate=86.1482
log2c=3.0 rate=89.5039
log2c=-3.0 rate=85.5614
log2c=9.0 rate=81.4302
source d'informationauteur Eman
Vous devez vous connecter pour publier un commentaire.
Utilisation
sort
:Pour l'entrée donnée, il retourne:
Si vous voulez lire les valeurs dans des variables, vous pouvez utiliser le builtin
read
:Pour les très gros fichiers, à l'aide de
sort
sera assez lent. Dans ce cas, il est préférable d'utiliser quelque chose comme awk, qui ne nécessite qu'une seule étape:Le temps de la complexité de cette opération est linéaire, alors que l'espace de la complexité est constante (et les petites). Explication:
awk -F= '...' test.txt
: Invoquer awk sur test.txt, à l'aide de=
que le séparateur de champBEGIN { max = -inf }
: Initialisermax
à quelque chose qui sera toujours plus petit que ce que vous êtes en train de lire.{ if ($3 > max) { max = $3; line = $0; } }
: Pour chaque ligne de saisie, simax
est inférieure à la valeur de la troisième champ ($3
), puis la mise à jour et n'oubliez pas la valeur de la ligne actuelle ($0
)END { print line }
: Enfin, l'impression de la ligne, nous avons rappelé lors de la lecture de l'entrée.