Anzeige:
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 31

Thema: Über Script Datei auslesen

  1. #16
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    HAllo !!!

    Nun habe ich das script in die cron eingetragen und es funktioniert.
    Wie kann man nun fest legen , dass nur fünf verschieden Nummern wichtig sind.
    Eine liste anlegen ????

    mfg

    Rainer

  2. #17
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Du hast ja jetzt die Zahl in der Variablen $NUMBER

    Nun kannst du einfach ne Case-Abfrage machen:
    Code:
    case "$person" in
      1237 ) echo "ne 1237"
      1239 ) echo "ne 1239"
      * ) echo "Was anderes"
    esac
    Advanced Bash Scripting Guide: http://www.tldp.org/LDP/abs/html/testbranch.html#EX29
    lesenswert!

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #18
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Danke habe es getestet.
    Wenn ich das Script ausführe list es die Textdatei durch und
    schreibt mir was ergefunden hat.
    Aber wenn ich es nochmals starten möchte geht es nicht mehr ???
    Erst nach ca. 3 mal CTRL+C dann geht es wieder für einmal.
    Was kann ich tun ????
    Hier habe ich das mini Script.

    #!/bin/bash

    DATEI=/Entwicklung/Enterprise/inc.txt
    for NUMBER in $(tail -f $DATEI | sed 's#.*M|--/--/-/---|=0:\([0-9]\{4\}\).*#\1#' <$DATEI); do
    # echo $NUMBER ist aufgetaucht
    # hier was tun

    case "$NUMBER" in

    "1237" ) echo "ne 1237";;
    "2066" ) echo "2066";;
    "2043" ) echo "2043";;
    # "*" ) echo "Was anderes";;

    esac

    done

    cat $DATEI >> $DATEI.old

    mfg

    Rainer

  4. #19
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Habe den Fehler gefunden.
    tail -f $DATEI | habe ich gelöscht dann gehts wieder.

    Nun das nächste Problem :
    Nach dem durchlaufen der Textdatei soll sich das Script merken
    welche die letzte Zeile war.
    Hier ein Auszug von der Textdatei.

    05/03/04 11:15:06 001001M|--/--/-/---|=0:2043 =Los of the 6 CRYSTAL
    05/03/04 11:15:06 001001M|--/--/-/---|=0:2063 =IPC

    Das Datum und Uhrzeit ist eindeutig.
    Wie kann man das jetzt machen , dass sich das Script merkt.
    Dann beim nächste Durchlauf dort anfängt.
    Also hier:
    05/03/04 11:15:06 001001M|--/--/-/---|=0:2063 =IPC "Letzte Zeile"
    05/03/04 11:15:16 001001M|--/--/-/---|=0:2043 =Los of the 6 CRYSTAL "neue Z."
    05/03/04 11:22:06 001001M|--/--/-/---|=0:2063 =IPC
    05/03/04 11:34:06 001001M|--/--/-/---|=0:2043 =Los of the 6 CRYSTAL
    05/03/04 11:44:06 001001M|--/--/-/---|=0:2063 =IPC

    mfg

    Rainer

  5. #20
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Diesbezüglich hab ich ja schon ne Lösung vorgeschlagen.

    Könntest wenigstens sagen wieso das nicht praktikabel ist

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #21
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Sorry !!!

    Dann habe ich die Lösung nicht richtig verstanden.

  7. #22
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Was muß ich in das Script einfügen , so daß das Datum der letzten Zeile
    ausgegeben wird ???

  8. #23
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    äh, jetzt komme ich nicht mehr ganz mit. Du möchtest, dass die letzte der bearbeiteten Zeilen nochmal bearbeitet wird?

    Code:
    #!/bin/bash
    
    numberWork() {
      case "$1" in
        "1237" ) echo "ne 1237";;
        "2066" ) echo "2066";;
        "2043" ) echo "2043";;
         # "*" ) echo "Was anderes";;
      esac
    }
    
    DATEI=/Entwicklung/Enterprise/inc.txt
    WORK=$DATEI.work
    mv $DATEI $WORK
    touch $DATEI
    
    #letzter (schon bearbeiteter) Eintrag nochmal
    numberWork $(tail -1 numberWork | $(sed 's#.*M|--/--/-/---|=0:\([0-9]\{4\}\).*#\1#'))
    
    for NUMBER in $(sed 's#.*M|--/--/-/---|=0:\([0-9]\{4\}\).*#\1#' <$WORK); do
      numberWork $NUMBER
    done
    
    cat $WORK >> $DATEI.old
    rm $WORK
    Da ja immer neue Einträge hinzukommen können wird die Inputdatei zuerst nach inc.txt.new verschoben. Mit dieser Datei wird dann gearbeitet. Am Ende kommt dann der Inhalt nach inc.txt.old (dort sammeln sich dann alle bearbeiteten Einträge an)
    inc.txt enthält jeweils nur die noch nicht bearbeiteten Einträge.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #24
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Hallo !!!

    Ich glaube wir haben an einander vorbei geredet.
    Also mein Script schaut so aus:

    #!/bin/bash

    DATEI=/Entwicklung/Enterprise/inc.txt
    for NUMBER in $(sed 's#.*M|--/--/-/---|=0:\([0-9]\{4\}\).*#\1#' <$DATEI); do
    # Test Datei inc.txt
    #
    # 05/03/04 11:15:06 001001M|--/--/-/---|=0:2043 =Los of the 6 CRYSTAL
    # 05/03/04 11:25:06 001001M|--/--/-/---|=0:2063 =IPC
    # 05/03/04 11:35:06 001001M|--/--/-/---|=0:2044 =Los of the 6 CRYSTAL
    # 05/03/04 11:45:06 001001M|--/--/-/---|=0:2066=IPC
    # 05/03/04 11:55:06 001001M|--/--/-/---|=0:2047 =Los of the 6 CRYSTAL
    # 05/03/04 12:15:06 001001M|--/--/-/---|=0:2067 =IPC
    #

    case "$NUMBER" in

    "1123" ) echo "1123";;
    "2066" ) echo "2066";;
    "2043" ) echo "2043";;
    # "*" ) echo "Was anderes";;

    esac

    done

    cat $DATEI >> $DATEI.old

    exit 0

    Der Eintrag mit tail funktioniert nicht ???

    for NUMBER in $(tail -f $DATEI | sed 's#.*M|--/--/-/---|=0:\([0-9]\{4\}\).*#\1#' <$DATEI); do

    Da war nun meine Frage ,weil tail nicht geht , muss ja das Script immer gestartet werden.
    Dann sucht das Script wieder die inc.txt durch von forne.
    Dass das nicht passiert , sollte die letzte Zeile das Datum merken , dann beim
    nächstenmal da wieder anfangen bei der nächsten Zeile.

    Heute habe ich jemanden gesprochen der meinte das wäre zu umständlich.
    Warum würde ich nicht die Zeilen zählen und weg schreiben die Anzahl.
    Dann beim nächsten öffnen der inc.txt das weggeschriebene wieder holen und
    bei der neuesten Zeile wieder anfangen . u.s.w
    Was meint ihr zu diesem Vorschlag ????

    mfg

    Rainer

  10. #25
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ok. Meine Lösung ist immer noch dieselbe.

    inc.txt wird verarbeitet. Dann wird der Inhalt in inc.txt.old angehängt und aus inc.txt gelöscht.

    Um mehr Sicherheit zu erreichen (damit wenn ein Eintrag während des Bearbeitens hinzukommt, der trotzdem nicht unbearbeitet nach inc.txt.old wandert) wird die Datei vor dem Bearbeiten nach inc.txt.work verschoben - neue Einträge kommen dann nach inc.txt, bearbeitet wird inc.txt.work und der Inhalt landet dann in inc.txt.old

    Code:
    #!/bin/bash
    
    DATEI=/Entwicklung/Enterprise/inc.txt
    WORK=$DATEI.work
    mv $DATEI $WORK
    touch $DATEI
    
    for NUMBER in $(sed 's#.*M|--/--/-/---|=0:\([0-9]\{4\}\).*#\1#' <$WORK); do
      case "$NUMBER" in
        "1237" ) echo "ne 1237";;
        "2066" ) echo "2066";;
        "2043" ) echo "2043";;
         # "*" ) echo "Was anderes";;
      esac
    done
    
    cat $WORK >> $DATEI.old
    rm $WORK
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  11. #26
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Verstanden.
    Was du nicht weißt ,die Datei inc.txt darf ich nicht den Inhalt gelöscht werden.
    Weil dies , die Error LOG Datei vom System ist.
    Da können andere Routinen ja nicht mehr zu greifen.

    mfg

    Rainer

  12. #27
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Endlich.
    Das hab ich jetzt schon etwa dreimal gefragt.

    Naja. Dann musst du halt Zeilen zählen, da das Tail offenbar nicht so will.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  13. #28
    Registrierter Benutzer
    Registriert seit
    04.03.2004
    Ort
    Weinheim
    Beiträge
    53
    Tut mir leid wenn ich die Fragen nicht so verstanden habe.
    Wie kann ich jetzt die Zeilen zählen ?
    Habe keine blassen Dunst ???

    mfg

    Rainer

  14. #29
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ok. Ich habs nicht direkt so gefragt - aber in meinen Beispielscripts wars so drin.

    http://www.tldp.org/LDP/abs/html/ hilft dir sicher weiter.

    Vermutlich kriegst du das aber einfacher mit dem Programm "watch" hin. Das wird dort nur ganz am Rande erwähnt, ich habs gesehen, als ich nach "tail -f" und Kommando ausführen suchte

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  15. #30
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    oder falls das nicht geht mit diff und ner Dateikopie.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

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