Hier ist ein Beispiel für eine Zeile von Log:Wie gruppiere ich mit bash scripting nach zwei Feldern?
2016-04-24 23:59:45 -1 6bd3fbb8-65ac-4d16-bf32-48659a76c499 2 +15173583107 14 +161760555935 14 de.xxxx-O2 layxxxd 0 1
Ich weiß, wie von einer eingereicht Gruppe, so ist dies die Lösung:
awk '{arr[$11]+=$12} END {for (i in arr) {print i,arr[i]}}' exmaple.log
und dies würde Ergebnisse sein:
xx 144
layxxxd 49.267
Meine Frage ist, dass wie kann ich durch zwei Felder statt einer gruppieren, zuerst sollte $11
sein und zweitens ist $10
? So sollten die Ergebnisse ändern:
layxxxd unknown 100
layxxxd de.xxxx-O2 44
so etwas wie dies versuchen: 'awk‚{arr [11 $ 12 $] + = $ 12} END {for (i in arr) { print ich, arr [i]}} 'exmaple.log' – ritesht93
@ ritesht93 nein, niemals' arr [$ 11 $ 12] ... ', da es verschiedene Kombinationen der Felder in die gleiche Index-Zeichenkette verwandelt. z.B. $ 11 = "a" und $ 12 = "bc" würden den gleichen Array-Index "abc" wie $ 11 = "ab" und $ 12 = "c" erzeugen. Siehe [@ Anubhavas Antwort] (http://stackoverflow.com/a/36885254/1745001) für einen gültigen Ansatz. –
@EdMorton Oh ja danke .. Das ist ein gültiger Punkt :) – ritesht93