Dateiinhalt zeilenweise ausgeben

Diskutiere Dateiinhalt zeilenweise ausgeben im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich bin ein Neuling in der Shellprogrammierung unter Linux und brauche euere Hilfe. Über eine Aktionfunktion eines Tools lasse ich ein...

  1. #1 webm2000, 25.07.2007
    webm2000

    webm2000 Grünschnabel

    Dabei seit:
    17.06.2007
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo, ich bin ein Neuling in der Shellprogrammierung unter Linux und brauche euere Hilfe.
    Über eine Aktionfunktion eines Tools lasse ich ein Meldung in eine Datei (inhalt.txt) laufen.
    Die Meldung hat diesen Wortlaut:
    ITMMeldung.serv00ra:LZ@tcm.local
    ITMMeldung = kennzeichnet das es von meinen Monitoringsystem gemeldet wird.
    serv00ra = ist der Servername, der die Störung ausgibt.
    :LZ = ist der Agententyp, der die Störung erkannt hat.
    @tcm.local = ist die Postfachkennung auf dem Meldesystem, welches das Bereitschaftsteam verständig.
    Hab jetzt das Probleme,dass wenn mehrere Fehlermeldung in in diese Datei geschreiben werden, dieser auf einmal in einer E-Mail versendet werden.

    Inhalt inhalt.txt
    servm1:LZ servm2:LZ servm3:LZ

    Muss aber jede Fehlermeldung einzell versenden und nach dem Versand muss die Datei gelöscht werden, sobald alle Fehlermeldungen ausgelesen sind.

    chmod a+x /tmp/inhalt.txt
    meldung=`cat /tmp/inhalt.txt`
    VERS=$(echo $meldung | sed "s/:LZ/.Liunx/g")
    /usr/bin/mail -s ITMMELDUNG -r systemmanagement@tcm.de ITMMELDUNG."$VERS"@tcm.local

    kann mir jemand helfen:hilfe2:
     
  2. #2 smg, 26.07.2007
    Zuletzt bearbeitet: 26.07.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Steht dein Zeug alles in EINER Zeile? Also hat deine Datei nur eine Zeile? Dann:

    Code:
    awk 'BEGIN{OFS="\n";RS= " "} {print gensub(":LZ", ".Liunix", "g");} ' /tmp/inhalt.txt | xargs -i%  /usr/bin/mail -s ITMMELDUNG -r systemmanagement@tcm.de ITMMELDUNG.%.@tcm.local && rm /tmp/inhalt.txt
    Pro Zeile ein Eintrag, dann:
    Code:
    while read LINE; do
    /usr/bin/mail -s ITMMELDUNG -r systemmanagement@tcm.de ITMMELDUNG."$(sed 's/:LZ/.Liunx/g' <<< "$LINE")"@tcm.local 
    done < /tmp/inhalt.txt && rm /tmp/inhalt.txt
     
  3. #3 webm2000, 26.07.2007
    webm2000

    webm2000 Grünschnabel

    Dabei seit:
    17.06.2007
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo smg,

    danke! hat genauso funktioniert wie es angedacht war.
    Aber bitte kannst du mir deinen Programmiercode für die Zeilenvariante erläutern.
    awk 'BEGIN{OFS="\n";RS= " "} {print gensub(":LZ", ".Liunix", "g");} ' /tmp/inhalt.txt | xargs -i% /usr/bin/mail -s ITMMELDUNG -r systemmanagement@tcm.de ITMMELDUNG.%.@tcm.local && rm /tmp/inhalt.txt

    Danke!
     
  4. #4 smg, 26.07.2007
    Zuletzt bearbeitet: 26.07.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Okay, der setzt den Rekordseperator zu einem Leerzeichen " ", weil ja dein Zeug durch Leerzeichen getrennt war, Outputseperator wird zu \n gesetzt. Dann wird die Substitution mittels gensub() durchgeführt und nach STDOUT geschrieben, dann wirds an xargs gepiped dass dann das programm mail aufruft, % dabei ist jeweils eine Eintrag deiner Liste. Am Ende löschter die Datei.

    Das geht bestimmt besser/eleganter, aber mir ist auf die schnelle nix besseres eingefallen! Sorry!

     
Thema: Dateiinhalt zeilenweise ausgeben
Besucher kamen mit folgenden Suchen
  1. zenity dateiinhalt anzeigen

    ,
  2. auslesen dateiinhalt linux

    ,
  3. ausgeben von dateiinhalt ab einer bestimmten zeile linux

    ,
  4. dateiinhalt ausgeben c ,
  5. linux dateiinhalt,
  6. teil einer zeile ausgeben shell,
  7. linux dateiinhalte ausgeben,
  8. linux dateiinhalt und ort ausgeben,
  9. unix dateiinhalt ausgeben,
  10. bash zeilenweise ausgeben,
  11. bash datei zeilenweise verarbeiten,
  12. bash datei zeilenweise ausgeben,
  13. ein eintrag pro zeile ausgeben linux shell,
  14. ein eintrag pro zeile linux shell,
  15. linux datei zeilenweise ausgeben
Die Seite wird geladen...

Dateiinhalt zeilenweise ausgeben - Ähnliche Themen

  1. Dateiinhalt verdoppeln

    Dateiinhalt verdoppeln: Hallo, ich möchte den Inhalt einer Datei verdoppeln, Kopf- und Endesatz ausgenommen. Danach muss im Endesatz die Datensatzanzahl angepasst werden...
  2. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...
  3. Dateiinhalt mit Tabs wie Original an andere Datei anhängen

    Dateiinhalt mit Tabs wie Original an andere Datei anhängen: hallo, ich habe eine Datei mit diesem Inhalt: 0 0 12 -3.616 4.788 0 0.000...
  4. awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung

    awk: Dateiinhalt/Variableninhalt als Teil einer if-Anweisung: Hallo Ich habe folgendes Problem: Anhand dem Ergebnis einer Datenbankabfrage habe ich mir mit sed usw. einen String gebastelt und in einer Datei...
  5. Dateiinhalte multiplizieren

    Dateiinhalte multiplizieren: Hallo, ich möchte gern die Inhalte mehrerer Datein multiplizieren und das Ergebnis in eine Ergebnisdatei schreiben lassen. Beispiel:...