Maximum et Minimum à l'aide de awk
Comment voulez-vous trouver le maximum et le minimum de a,b,c les valeurs pour les lignes qui commencent avec les MATHÉMATIQUES à partir du fichier suivant?
TITLE a b c
MATH 12.3 -0.42 5.5
ENGLISH 70.45 3.21 6.63
MATH 3.32 2.43 9.42
MATH 3.91 -1.56 7.22
ENGLISH 89.21 4.66 5.32
Il ne peut pas être juste 1 ligne de commande. Il doit être un fichier de script à l'aide de fonction début et de FIN.
- Je obtenir la mauvaise valeur minimale et je finis par obtenir une chaîne de caractères de max quand je lance mon programme. S'il vous plaît aider!
Voici mon code pour la colonne a:
BEGIN { x=1 }
{
if ($1 == "MATH") {
min=max=$2;
for ( i=0; i<=NF; i++) {
min = (min < $i ? min : $i)
max = (max > $i ? max : $i)
}
}
}
END { print "max a value is ", max, " min a value is ", min }
Merci!
Poster votre code. Il est difficile de dire ce que vous avez fait de mal sans elle.
Ok, j'ai ajouté mon code.
Vous ne courez pas dans une boucle pour tous les matches. Veuillez voir mon exemple.
Ok, j'ai ajouté mon code.
Vous ne courez pas dans une boucle pour tous les matches. Veuillez voir mon exemple.
OriginalL'auteur user2763235 | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
Ce code pourrait démontrer un concept de ce que vous voulez:
De sortie:
Supprimer
1
pour supprimer les messages:Version du Script:
$1!="MATH"
comparer à!($1=="MATH")
Oui, c'est mieux. J'ai fait la mise à jour. Merci.
Aprreciate la réponse c'était la réponse dont j'avais besoin. Cependant pourquoi je vous aide j = 2 dans la boucle for et pas j = 0?
j
est un pointeur vers le champ cible, le nombre et les numéros commence au champ numéro 2 ($2
) alors que les chaînes de référence (en MATHÉMATIQUES, etc.) sont dans le champ 1 ($1
).OriginalL'auteur konsolebox
regardez votre boucle
il commence à partir de i=0 donc la condition doit être
au lieu de
essayez la ligne suivante à la place de cette ligne .... j'espère que vous obtenez ce que u sont à la recherche pour
reste, tout a l'air bien pour moi.... grâce
OriginalL'auteur nikhil
La variable i dans la boucle for doit au moins commencer par 2(le 2ème champ), pas 0, qui représentent l'ensemble de la ligne, et à la fin avec la norme NF.
Exécuter avec la commande:(
testawk.script
pour le script awk nom de fichier,test.data
pour les données d'entrée filename)de sortie:
Parce que le champ est a commencé avec un champ, qui est le deuxième champ. Il ce clair?
OriginalL'auteur lulyon
Je n'ai pas de terminal à portée de main sur moi, mais quelque chose le long de ces lignes seront le plus petit de chaque ligne.
OriginalL'auteur TopGunCoder