Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 25

Thema: date grep Sprachproblem

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32

    date grep Sprachproblem

    Ich weiß klingt komisch aber lasst es mich erklären.

    Meine localisierung ist deutsch. Demzufolge ist auch meine date ausgabe natürlich deutsch

    Code:
    So 9. Mär
    Dummerweise sind die Datumsangaben in meinen Logfiles englisch.

    Code:
    Mar  9
    Wie kann ich in meinen logfiles nach dem datum grabben mit dem Befehl.

    Code:
    date +'%D'
    Das soll nur ein Beispiel sein. Ich kann es mir später noch zurecht biegen. Aber ihr seht mein Problem mit der englischen Ausgabe im Logfile und er deustchen ausgabe von date.
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  2. #2
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo,

    man könnte vor dem Aufruf von date die Umgebungsvariable $LANG neu setzen, zumindest hier funktioniert es.
    Code:
    florian@leuchtturm0:~$ echo $LANG 
    de_DE.utf8
    florian@leuchtturm0:~$ date
    So 9. Mär 14:15:25 CET 2008
    florian@leuchtturm0:~$ LANG=en_EN.utf8
    florian@leuchtturm0:~$ echo $LANG 
    en_EN.utf8
    florian@leuchtturm0:~$ date
    Sun Mar  9 14:15:32 CET 2008
    .

    Gruß, Florian
    Ein gebrechlich Wesen ist der X-Server.

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    Ich glaub das wäre etwas hart gegriffen. Ich habe von
    Code:
    LANG_TIME=C
    gelesen. Leider klappt das bei mir nicht.

    Vielleicht wäre das ehr ein Ansatz. Irgendwie. Wenn einer weiß wie genau es geht
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  4. #4
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Zitat Zitat von leon Beitrag anzeigen
    Ich glaub das wäre etwas hart gegriffen. Ich habe von
    Code:
    LANG_TIME=C
    gelesen. Leider klappt das bei mir nicht.

    Vielleicht wäre das ehr ein Ansatz. Irgendwie. Wenn einer weiß wie genau es geht
    Hmm, mit LANG_TIME funktioniert es hier auch nicht.

    Was meinst du denn mit hart gegriffen? Wenn du $LANG in einer Subshell neu setzt und dort das date ausführt, passiert doch eigentlich nichts weiter?

    Code:
    florian@leuchtturm0:~/tmp$ cat date.sh 
    #!/bin/sh
    
    echo $LANG;
    date;
    cmd="LANG=en_EN.utf8 && date";
    datum_auf_englisch=`eval $cmd`;
    echo "::"$datum_auf_englisch;
    echo $LANG;
    date;
    florian@leuchtturm0:~/tmp$ ./date.sh 
    de_DE.utf8
    So 9. Mär 14:28:43 CET 2008
    ::Sun Mar 9 14:28:43 CET 2008
    de_DE.utf8
    So 9. Mär 14:28:43 CET 2008
    Ein gebrechlich Wesen ist der X-Server.

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    Ok ich wollte es mir mal anschauen. Leider gibt es folgende Ausgabe bei mir

    Code:
    de_DE.utf8
    So 9. Mär 14:24:23 CET 2008
    ::So 9. Mär 14:24:23 CET 2008
    de_DE.utf8
    So 9. Mär 14:24:23 CET 2008
    Irgendetwas will mit meiner LANG Variable nicht ganz.

    komisch
    Code:
    set | grep LANG
    GDM_LANG=de_DE.utf8
    LANG=en_EN.utf8
    Und dennoch ist meine date Ausgabe deutsch
    Geändert von leon (09-03-2008 um 14:29 Uhr)
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  6. #6
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hmm, habe gerade mal locale ausgeführt und da wurde die Variable LC_TIME angezeigt, wenn ich die mit en_EN.utf8 neu setze, dann kommt bei mir auch die englische Ausgabe:
    Code:
    florian@leuchtturm0:~/tmp$ cat date.sh
    #!/bin/sh
    
    locale;
    date;
    cmd="export LC_TIME=en_EN.utf8 && date";
    datum_auf_englisch=`eval $cmd`;
    echo "::"$datum_auf_englisch;
    locale;
    date;
    florian@leuchtturm0:~/tmp$ ./date.sh 
    LANG=de_DE.utf8
    LC_CTYPE="de_DE.utf8"
    LC_NUMERIC="de_DE.utf8"
    LC_TIME="de_DE.utf8"
    LC_COLLATE=C
    LC_MONETARY="de_DE.utf8"
    LC_MESSAGES="de_DE.utf8"
    LC_PAPER="de_DE.utf8"
    LC_NAME="de_DE.utf8"
    LC_ADDRESS="de_DE.utf8"
    LC_TELEPHONE="de_DE.utf8"
    LC_MEASUREMENT="de_DE.utf8"
    LC_IDENTIFICATION="de_DE.utf8"
    LC_ALL=
    So 9. Mär 14:43:45 CET 2008
    ::Sun Mar 9 14:43:45 CET 2008
    LANG=de_DE.utf8
    LC_CTYPE="de_DE.utf8"
    LC_NUMERIC="de_DE.utf8"
    LC_TIME="de_DE.utf8"
    LC_COLLATE=C
    LC_MONETARY="de_DE.utf8"
    LC_MESSAGES="de_DE.utf8"
    LC_PAPER="de_DE.utf8"
    LC_NAME="de_DE.utf8"
    LC_ADDRESS="de_DE.utf8"
    LC_TELEPHONE="de_DE.utf8"
    LC_MEASUREMENT="de_DE.utf8"
    LC_IDENTIFICATION="de_DE.utf8"
    LC_ALL=
    So 9. Mär 14:43:45 CET 2008
    .

    Klappt das bei dir?
    Ein gebrechlich Wesen ist der X-Server.

  7. #7
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    Irgendwie nicht mein Tag heute

    Code:
    marko@notebookmarko ~/Skripte $ ./test 
    LANG=de_DE.utf8
    LC_CTYPE="de_DE.utf8"
    LC_NUMERIC="de_DE.utf8"
    LC_TIME="de_DE.utf8"
    LC_COLLATE="de_DE.utf8"
    LC_MONETARY="de_DE.utf8"
    LC_MESSAGES="de_DE.utf8"
    LC_PAPER="de_DE.utf8"
    LC_NAME="de_DE.utf8"
    LC_ADDRESS="de_DE.utf8"
    LC_TELEPHONE="de_DE.utf8"
    LC_MEASUREMENT="de_DE.utf8"
    LC_IDENTIFICATION="de_DE.utf8"
    LC_ALL=de_DE.utf8
    So 9. Mär 14:41:46 CET 2008
    ::So 9. Mär 14:41:46 CET 2008
    LANG=de_DE.utf8
    LC_CTYPE="de_DE.utf8"
    LC_NUMERIC="de_DE.utf8"
    LC_TIME="de_DE.utf8"
    LC_COLLATE="de_DE.utf8"
    LC_MONETARY="de_DE.utf8"
    LC_MESSAGES="de_DE.utf8"
    LC_PAPER="de_DE.utf8"
    LC_NAME="de_DE.utf8"
    LC_ADDRESS="de_DE.utf8"
    LC_TELEPHONE="de_DE.utf8"
    LC_MEASUREMENT="de_DE.utf8"
    LC_IDENTIFICATION="de_DE.utf8"
    LC_ALL=de_DE.utf8
    So 9. Mär 14:41:46 CET 2008
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  8. #8
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    Vielleicht kann man mein eigentliches Problem ja anders lösen.
    Ich möchte ein Skript schreiben welches ein Log File ausliest und mir lediglich die Zeilen ausgibt, welches das aktuelle Datum enthält.
    Mir geht es darum zu sehen ob clamav oder besser freshclam ein update gemacht hat und wie es ausgegangen ist.

    Mein Logfile sieht so aus

    Code:
    Sat Mar  8 21:48:35 2008 -> --------------------------------------
    Sat Mar  8 21:48:35 2008 -> freshclam daemon 0.92.1 (OS: linux-gnu, ARCH: i386, CPU: i686)
    Sat Mar  8 21:48:35 2008 -> ClamAV update process started at Sat Mar  8 21:48:35 2008
    Sat Mar  8 21:48:41 2008 -> main.cvd is up to date (version: 45, sigs: 169676, f-level: 21, builder: sven)
    Sat Mar  8 21:48:41 2008 -> daily.inc is up to date (version: 6173, sigs: 56718, f-level: 26, builder: ccordes)
    Sat Mar  8 21:48:41 2008 -> --------------------------------------
    Sun Mar  9 09:48:40 2008 -> Received signal: wake up
    Sun Mar  9 09:48:40 2008 -> ClamAV update process started at Sun Mar  9 09:48:40 2008
    Sun Mar  9 09:48:40 2008 -> main.cvd is up to date (version: 45, sigs: 169676, f-level: 21, builder: sven)
    Sun Mar  9 09:48:40 2008 -> Downloading daily-6174.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6175.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6176.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6177.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6178.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6179.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6180.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> Downloading daily-6181.cdiff [100%]
    Sun Mar  9 09:48:41 2008 -> daily.inc updated (version: 6181, sigs: 57701, f-level: 26, builder: ccordes)
    Sun Mar  9 09:48:41 2008 -> Database updated (227377 signatures) from database.clamav.net (IP: 194.47.250.218)
    Sun Mar  9 09:48:41 2008 -> Clamd successfully notified about the update.
    Sun Mar  9 09:48:41 2008 -> --------------------------------------
    Sun Mar  9 10:26:33 2008 -> --------------------------------------
    Sun Mar  9 10:26:33 2008 -> freshclam daemon 0.92.1 (OS: linux-gnu, ARCH: i386, CPU: i686)
    Sun Mar  9 10:26:33 2008 -> ClamAV update process started at Sun Mar  9 10:26:33 2008
    Sun Mar  9 10:26:39 2008 -> main.cvd is up to date (version: 45, sigs: 169676, f-level: 21, builder: sven)
    Sun Mar  9 10:26:39 2008 -> Downloading daily-6182.cdiff [100%]
    Sun Mar  9 10:26:39 2008 -> daily.inc updated (version: 6182, sigs: 57708, f-level: 26, builder: ccordes)
    Sun Mar  9 10:26:39 2008 -> Database updated (227384 signatures) from database.clamav.net (IP: 65.120.238.5)
    Sun Mar  9 10:26:39 2008 -> Clamd successfully notified about the update.
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  9. #9
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Habe gerade nochmal die Manpage gelesen, was bekommst du denn für eine Ausgabe bei "date -R"?
    Ein gebrechlich Wesen ist der X-Server.

  10. #10
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    super

    schon mal ein prima Anfang

    Code:
    date -R
    Sun, 09 Mar 2008 15:15:29 +0100
    Jetzt muß es weiter gehen. Er muß jetzt das Format vom Log File erkennen.

    Code:
    Sun Mar  9
    Jetzt meckert date aber über mehrere Ausgabeformate

    Code:
    date -R +%m
    So schwer kann es doch eigentlich nicht sein, oder?
    Geändert von leon (09-03-2008 um 15:20 Uhr)
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  11. #11
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Mit date direkt wird man wohl nicht hinkommen, aber man kann die Ausgabe ja mit awk umformatieren:
    Code:
    florian@leuchtturm0:~$ date -R|awk '{printf("%.3s %s %d\n",$1,$3,$2)}'
    Sun Mar 9
    .
    Ein gebrechlich Wesen ist der X-Server.

  12. #12
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    PERFECT

    Vielen lieben Dank für Eure Hilfe. Jetzt ist allesso wie ich es brauche.
    Ich wünsche Euch allen noch einen schönen ruhigen Sonntag.


    Gruß
    Leon
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  13. #13
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32
    OK eine Kleinigkeit habe ich doch noch, Sorry!

    Code:
    grep "`date -R | awk '{printf("%.3s %s  %d\n",$1,$3,$2)}'`" /var/log/clamav/freshclam.log
    Klappt super. Jetzt möchte ich das in ein echo Befehl einbauen. Leider gibt es da Probleme.

    Code:
    echo "`grep "`date -R | awk '{printf("%.3s %s  %d\n",$1,$3,$2)}'`" /var/log/clamav/freshclam.log`"
    Ist wohl etwas zu viel des guten, hihi.
    Weiß da einer noch einen Rat?

    Schöner wäre glaube es mit cat zu machen

    Code:
    cat /var/log/clamav/freshclam.log | grep "`date -R | awk '{printf("%.3s %s  %d\n",$1,$3,$2)}'`"
    Das geht super. Und wie jetzt mit echo davor??
    Geändert von leon (09-03-2008 um 16:26 Uhr)
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  14. #14
    Registrierter Benutzer
    Registriert seit
    20.06.2000
    Beiträge
    32

    Gelöst

    Ich nehme alles zurück. Habe es mit etwas probieren doch noch alleine geschafft. Vielen Dank


    Gruß Leon
    Wenn Microsoft die Lösung meines Problems ist, dann möchte ich gerne mein Problem wieder!

  15. #15
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von leon Beitrag anzeigen
    ...
    Code:
    echo "`grep "`date -R | awk '{printf("%.3s %s  %d\n",$1,$3,$2)}'`" /var/log/clamav/freshclam.log`"
    ...
    Erste Frage: Wozu brauchst Du einen echo davor, wenn grep Dir das Ergebnis eh auf STDOUT ausgibt?

    Zum date-awk-Konstrukt: Doch, der date kann das ganz allein:
    Code:
    jan@jack:~/tmp> LC_TIME=en_EN.utf8 date +"%a %b %e"
    Mon Mar 10
    Damit bist Du auch gleich die Sorge wegen des zusätzlichen Leerzeichens im printf des awk los. Da stehen nämlich 2 Blanks vor %d - das dürfte ab heute, also bei 2-stelligen Tagen für Unmut sorgen ;-) Wenn schon, dann die Formatierung lieber so: "%.3s %s %2d\n".

    Deine Konstruktion oben hat schlicht und einfach ein paar Fehler. Du musst richtig escapen, dann klappts auch (ungetestet, hab grad kein clamav-Log da):
    Code:
     echo "`grep \"\`date -R | awk '{printf(\\\"%.3s %s %2d\n\\\",$1,$3,$2)}'\`\" /var/log/clamav/freshclam.log`"
    Nich so hübsch, ne? Vielleicht ist dann ja die Variante mit date allein doch besser:
    Code:
    LC_TIME=en_EN.utf8 grep "`date +\"%a %b %e\"`" /var/log/clamav/freshclam.log
    Und wenn Du mir verrätst, warum Du unbedingt ein echo brauchst (die Ausgabe sieht genauso aus ohne), dann verrate ich auch, wie das geht ;-)

    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •