Je veux résumer la valeur dans la colonne 2e et 3e colonne pour la même valeur dans la première colonne
awk -F" " '{b[$2]+=$1} END { for (i in b) { print b[i],i } } '
5 Réponses :
Vous pouvez le faire avec avec votre entrée dans awk code> en enregistrant d'abord les champs dans le premier enregistrement, puis pour tous les enregistrements suivants, en comparant si le premier champ correspond si, le cas échéant, ajoutez le contenu des champs deux et trois et continuer. Si le premier champ ne parvient pas à correspondre, émettez ensuite votre premier champ et que les sommes d'exécution, par exemple
fichier code>, vous pouvez copier et coller le ce qui précède dans votre terminal et obtenir, les suivants: P>
1555971300 2 0
1555971000 0 2
1555971000 6 1
1555971300 3 0
En fait, le début devrait simplement être supprimé :) code> j'ai commencé dans une direction et terminé dans un autre.
@DAVIDCRANKIN Votre première solution ne fonctionne pas si vous n'avez pas toutes la colonne 1 1 $ code> de manière séquentielle. Par exemple, déplacez la ligne d'entrée 1 à la ligne 4 (à la fin du fichier)
Oui, cela est expliqué dans la présentation de la 2e approche. Le premier a été fait sans tableaux, le second les introduit. Bon oeil.
Voici une autre solution avec la lecture input_file 2 fois et il fournira une sortie dans la même séquence que la séquence d'entrée_file.
awk 'FNR==NR{a[$1]+=$2;b[$1]+=$3;next} ($1 in a){print $1,a[$1],b[$1];delete a[$1]}' Input_file Input_file
Un autre awk code> qui fonctionnerait quel que soit tout ordre des enregistrements, qu'ils ne soient pas triés ou non:
awk '{r[$1]++}
r[$1]==1{o[++c]=$1}
{f[$1]+=$2;s[$1]+=$3}
END{for(i=1;i<=c;i++){print o[i],f[o[i]],s[o[i]]}}' file
Si des données dans "D" sans trier, essayé sur GNU AWK,
awk '{w[NR]=$0} END{asort(w);f=1;for(;i++<NR;){split(w[i],v);if(v[1]==a||f){f=0;b+=v[2];c+=v[3]} else{print a,b,c;b=v[2];c=v[3];} a=v[1]} print a,b,c;}' d
en supposant que lorsque vous avez écrit:
$ awk '{ b[$1]+=$2; c[$1]+=$3 } END{ for (i in b) print i,b[i],c[i] }' file 1555971000 6 3 1555971300 5 0
Vous envisagez de vous question Histoire, je pense que vous devriez lire ceci: Stackoverflow.com/help/someone-answers