J'ai quatre colonnes dans mon fichier texte. Je dois prendre la valeur moyenne de la quatrième colonne correspondant à la deuxième colonne et enregistrer la sortie dans un autre fichier qui ne contiendra que deux colonnes avec des résultats moyens. Veuillez aider
awk '{total+= $4} END {print total/NR}' inputfilename.txt
3 Réponses :
Utilisez deux tableaux, un pour les sommes; un pour compter le nombre de chiffres qui leur sont ajoutés. À la fin du fichier Imprimer def code> S et des moyennes correspondantes. 56700 -74.8
56701 -87.05
56702 -75.6333
Merci pour votre réponse. Pouvez-vous expliquer la syntaxe s'il vous plaît.
@preeti Lire manuel GAWK à la place. Parce qu'il n'y a pas d'astuce syntaxique dans la commande ci-dessus, tout est simple
Merci@ismail va faire ça. Je suis débutant et je voulais traiter mes données.
@Peeti c'est toute une autre question. et je ne sais rien sur le complot
Vous pouvez également envisager d'utiliser une langue plus puissante, spécialement si vous devez faire plus de choses de fantaisie.
E.g. python code> p>
Parce que vos tags d'origine incluent Bash, voici un exemple avec Cette solution avec deux boucles (une pour les touches et l'autre par clé) n'est acceptable que si vos linémanes du fichier entrées ne sont pas trop grandes (je n'utilise pas cet exemple pour millions de lignes), Mais il est plus lisible comme un code d'une ligne (surtout pour les débutants). p> p> Bash code> et le BC code> -Tool (pas un code à une ligne, mais parfois d'espoir d'apprendre à apprendre Bash) : BC code> utilisé avec paramètre - MathLib code> Utilisez une échelle de 20. Si nécessaire ou si vous le souhaitez, vous pouvez utiliser un Échelle supérieure et réduire les décimales uniquement à l'impression du résultat. p>
Qu'avez-vous déjà essayé?
Je reçois la moyenne de la colonne entière en une fois à l'aide de: //////wk '{Total + = $ 4} fin {IMPRIMER TOPT / NR}' INPUTFILENAME.TXT //////// que j'ai besoin d'appliquer la condition .
Quelle est la sortie attendue pour l'entrée donnée?
Si l'entrée est une longueur fixe (toutes les touches de l'octet 5..10), vous pouvez extraire ces touches avec couper et faire une boucle de temps avec Grep pour chaque clé.
Il n'est pas fixé parfois, il enregistre chaque seconde de données afin que les données soient énormes.