Datei auslesen Daten addieren und sortieren

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von mehlbox, 30.11.2007.

  1. #1 mehlbox, 30.11.2007
    mehlbox

    mehlbox Eroberer

    Dabei seit:
    11.10.2005
    Beiträge:
    61
    Zustimmungen:
    0
    Ort:
    NRW
    Hallo zusammen,

    in der xferlog steht folgendes drin als Beispiel:
    Datum IP Adresse Bytes Verzeihnis mit Datei dann das kleine i und o das bedeutet i = incoming Traffic o = outgoing.
    Sun Nov 25 04:54:16 2007 0 xxx.xxx.xxx.xxx 447930 /ftp/user1/send/BB005908/1_Bild_001.jpg b _ i r user1 ftp 0 * c
    Sun Nov 25 04:54:17 2007 0 xxx.xxx.xxx.xxx 374523 /ftp/user8/send/BB005908/2_Bild_002.jpg b _ i r user8 ftp 0 * c
    Sun Nov 25 04:54:18 2007 0 xxx.xxx.xxx.xxx 340449 /ftp/user6/send/BB005908/3_Bild_004.jpg b _ i r user6 ftp 0 * c
    Sun Nov 25 04:54:20 2007 0 xxx.xxx.xxx.xxx 377439 /ftp/user3/send/BB005908/4_Bild_005.jpg b _ i r user3 ftp 0 * c
    Sun Nov 25 04:54:21 2007 0 xxx.xxx.xxx.xxx 295895 /ftp/user2/send/BB005908/5_Bild_006.jpg b _ i r user2 ftp 0 * c
    Sun Nov 25 04:54:22 2007 0 xxx.xxx.xxx.xxx 274998 /ftp/user1/send/BB005908/6_Bild_007.jpg b _ i r user1 ftp 0 * c
    Sun Nov 25 04:54:23 2007 0 xxx.xxx.xxx.xxx 409051 /ftp/user3/send/BB005908/7_Bild_008.jpg b _ i r user3 ftp 0 * c
    Sun Nov 25 04:54:24 2007 0 xxx.xxx.xxx.xxx 354890 /ftp/user2/send/BB005908/8_Bild_009.jpg b _ i r user2 ftp 0 * c

    Nun hatte ich gerne nach userx sortiert die Summe von den übertragenden Bytes i (incoming Traffic siehe LOG) und o (outgoing Traffic siehe LOG) für den leszten zurückliegenden Tag.

    Hoffe habe mich so richtig ausgedrückt leider habe ich keine Ahung vom Programmieren

    Danke und Gruß
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bytepool, 30.11.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    hi,

    und was genau ist jetzt deine Frage an uns?

    Ich fuerchte ohne Programmierung wirst du das nicht automatisiert bekommen. Ich wuerde mir an deiner Stelle Perl anschauen...

    mfg,
    bytepool
     
  4. #3 Wolfgang, 30.11.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Wir sind hier keine Skriptfabrik.

    Das Problem ist auch mit Shellmitteln realisierbar, allerdings weniger trivial als mit Perl und co.

    Und mal schnell einen Einzeiler dafür eintippen (der dann über mehrere Zeilen geht) mag ich nicht so ohne ganz deine Eigenbemühungen gesehen zu haben.

    Wolfgang
     
  5. #4 mehlbox, 05.12.2007
    mehlbox

    mehlbox Eroberer

    Dabei seit:
    11.10.2005
    Beiträge:
    61
    Zustimmungen:
    0
    Ort:
    NRW
    Fast richtig ??

    Hallo zusammen,

    habe mal mit Google gesucht und so einiges herausgefunden doch habe ich nun nur noch ein kleines Problem mit der Ausgabe vielleicht könnt ihr mir da helfen?
    Habe folgendes Script hin bekommen welches aber leider komische Zahlen ausspuckt, was ist daran denn noch falsch??
    #!/bin/bash

    cd /var/log/

    file="xferlog"

    user=`awk '{print $14 }' $LOGFILE | sort |uniq`

    for b in $user
    do
    bytes=`grep $file -e $b |awk '{sum+=$8}END{print sum}'`
    echo -e "$b bytes: $bytes"
    done
    Ausgabe sieht so aus:
    userxy bytes: 1.8482e+10 -> das ist die falsche Ausgabe

    Danke und Gruß
     
  6. #5 Wolfgang, 05.12.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Abgesehen davon, dass du das alles innerhalb von awk hättest realisieren können:
    Verwende printf mit entsprechendem Format.

    Z.B Zehn -stellig mit 3 Nachkommastellen (Fließkomma)
    Code:
    printf "%14.3\n", VAR
    
    Gruß Wolfgang
     
  7. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Code:
    awk '{ bites[$14] += $8} END {  num = asort(bites, sbites); for (i=1; i<=num; ++i) print i, sbites[i] ; }' Dateiname
    
    asort ersetzt die Indizes durch numerische Indizes, d.h., die usernamen gehen verloren. Dazu muesstest Du wohl auf bites nochmal zugreifen.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Datei auslesen Daten addieren und sortieren

Die Seite wird geladen...

Datei auslesen Daten addieren und sortieren - Ähnliche Themen

  1. Datei auslesen und fund per MAil versenden.

    Datei auslesen und fund per MAil versenden.: Hallo folgendes Script habe ich zur Zeit in Arbeit. Und zwar führe ich über "at" ein kleines Script aus was in einem Logfile nach bestimmten...
  2. Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben

    Dateien auslesen und Daten systematisch angeordnet in Datei ausgeben: Guten Abend, ich hätte da mal eine Frage. Bin mir recht sicher, dass es in der Shell funktionieren sollte, aber kenne mich damit kaum aus....
  3. ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern

    ca. 1200 PDF-Dateien auslesen und bestimmte Daten in eine CSV-Datei speichern: Hallo Leute, heute brauche ich mal einen dringenden Rat von Euch. Ich habe hier etwas mehr als 1200 PDF-Dateien (Text), die jeweils ein...
  4. Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

    Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql: Hallo Eventuell kann mir jemand bei meinem Problem helfen. Ich habe mich irgendwie total verrannt und komme nicht weiter. Die folgende...
  5. Datei auslesen per Python (WLST)

    Datei auslesen per Python (WLST): Guten Abend, ich weiß nicht ob ich das hier posten kann - da WLST (WebLogic Scripting Tool) ja jetzt nicht so dazu gehört... Aber vielleicht...