[Bash] Problem: Tagesdatum als Variable
Ergebnis 1 bis 7 von 7

Thema: [Bash] Problem: Tagesdatum als Variable

  1. #1
    1 ? "HELLO WORLD":GOTO 1
    Registriert seit
    05.08.2004
    Ort
    Köllefornia
    Beiträge
    3

    Question [Bash] Problem: Tagesdatum als Variable

    Hallo Leute,

    ich sitze gerade an einem einfachen (Bash-)Skript, das zunächst mal das Tagesdatum in eine Variable übergeben soll, um als nächstes aus einer Log-Datei die Einträge des aktuellen Tages herauszugreppen.

    Die Protokolldatei beginnt mit dem Monatskürzel ("Aug"), gefolgt von einem Leerzeichen, wenn der Tag zweistellig ist ("Aug 10"), bzw. von zwei Leerzeichen, wenn der Tag einstellig ist ("Aug 5").

    Wenn ich die Ausgabe von "date" unmittelbar in eine Datei umleite, entspricht das Ergebnis der Datumsanzeige wie oben beschrieben.

    Lese ich nun diese Datei mit "cat" aus und leite die Ausgabe in eine Variable, ist das Ergbebnis anders (nämlich grundsätzlich mit einem Leerzeichen zwischen Datumskürzel und Tag, wodurch das Suchmuster natürlich nicht trifft):

    Code:
    #!/bin/bash
    
    date +%b" "%e > datum
    cat datum
    
    # Ergibt: Aug  5 (= 2 Leerzeichen)
    
    export DATUM=`cat datum`
    echo $DATUM
    
    # Ergibt: Aug 5 (= 1 Leerzeichen)
    Weiß jemand, warum?




  2. Inside Anonymous - Lesetipp zum Sonderpreis


     Inside Anonymous erzählt erstmalig die Geschichte dreier Mitglieder des harten Kerns:
    ihren Werdegang und ihre ganz persönliche Motivation, die sie zu überzeugten Hackern machte.
    Basierend auf vielen exklusiven Interviews bietet das Buch einen einzigartigen und spannenden
    Einblick in die Köpfe, die hinter der virtuellen Community stehen.
    Das Buch kostet bei terrashop.de jetzt statt 22,00 EUR nur noch 4,99 EUR.




    Jetzt bei terrashop.de anschauen – Nur solange der Vorrat reicht


  3. #2
    LangLinuxNutzer Avatar von bluelupo
    Registriert seit
    23.11.2003
    Ort
    Nahe der bayerischen Alpen
    Beiträge
    119
    Hi,

    sed -n '/^[0-9]\{1,2\} \{1,2\}'$MONAT'/p' logdatei

    sollte das erledigen was du willst. RegExp sind halt manchmal nicht ganz einfach.

    Erklärung:
    am Anfang Zeile (^) ein oder zwei Ziffern, danach ein oder zwei Leeräume, gefolgt von dem Inhalt der Variablen $MONAT.

    Warum der 'cat' das nicht macht weiss ich leider nicht.

  4. #3
    LangLinuxNutzer Avatar von bluelupo
    Registriert seit
    23.11.2003
    Ort
    Nahe der bayerischen Alpen
    Beiträge
    119
    ein egrep geht auch wenn dir sed zu kryptisch ist...
    egrep '^[0-9]{1,2} {1,2}$MONAT' logdatei

  5. #4
    Freier Programmierer[Mod] Avatar von oenone
    Registriert seit
    22.08.2002
    Ort
    Mannheim
    Beiträge
    599
    hm.. scheint ein sh problem zu sein.. mit zsh tritt dies phaenomen nicht auf. mit sh und mit bash allerdings schon.

    auf bald
    oenone
    if you don't remember something, it never happened.
    if you aren't remembered, you never existed.

  6. #5
    1 ? "HELLO WORLD":GOTO 1
    Registriert seit
    05.08.2004
    Ort
    Köllefornia
    Beiträge
    3
    Zitat Zitat von bluelupo
    Hi,

    sed -n '/^[0-9]\{1,2\} \{1,2\}'$MONAT'/p' logdatei

    RegExp sind halt manchmal nicht ganz einfach.
    Die Logdatei durch den sed zu jagen ist nun wirklich nicht das Problem. Wollte eher wissen, warum im zweiten Fall das zweite Leerzeichen unterdrückt wird.

    Hat sich eh erledigt: es geht, wenn man die Variable in Anführungszeichen setzt.

  7. #6
    LangLinuxNutzer Avatar von bluelupo
    Registriert seit
    23.11.2003
    Ort
    Nahe der bayerischen Alpen
    Beiträge
    119
    Zitat Zitat von Köter 909
    Die Logdatei durch den sed zu jagen ist nun wirklich nicht das Problem. Wollte eher wissen, warum im zweiten Fall das zweite Leerzeichen unterdrückt wird.

    Hat sich eh erledigt: es geht, wenn man die Variable in Anführungszeichen setzt.
    Hi,

    hab mal ein bischen die Shell-Bibel gewälzt.

    Die Lösung scheint die vordefinierte SHELL-Variable IFS (Internal Field Seperator). Die steht auf einen Leerzeichen/Tab/Neue-Zeile-Zeichen d.h. deine Variable DATUM enthält zwei Elemente (Aug und 5) und der Datenfeldtrenner ist EIN Leerzeichen.

  8. #7
    1 ? "HELLO WORLD":GOTO 1
    Registriert seit
    05.08.2004
    Ort
    Köllefornia
    Beiträge
    3
    @bluelupo: Danke!

Ähnliche Themen

  1. fglrx - Radeon AGP Problem
    Von tr0nix im Forum Grafik / Video
    Antworten: 8
    Letzter Beitrag: 16.03.2004, 22:44
  2. backticks problem
    Von Wolle im Forum Ruby, php, Perl, Python ...
    Antworten: 1
    Letzter Beitrag: 27.10.2003, 18:29
  3. Ominöses AGP Problem :(
    Von devilz im Forum Linux OS
    Antworten: 2
    Letzter Beitrag: 13.01.2003, 15:11
  4. fork/clone problem
    Von -=Azrael=- im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 29.07.2002, 22:36

Lesezeichen

Lesezeichen

Berechtigungen

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