Dateiinhalt zeilenweise ausgeben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von webm2000, 25.07.2007.

  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. 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 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
     
  4. #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!
     
  5. #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!

     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema: Dateiinhalt zeilenweise ausgeben
Besucher kamen mit folgenden Suchen
  1. linux dateiinhalt und ort ausgeben

    ,
  2. unix dateiinhalt ausgeben

    ,
  3. bash zeilenweise ausgeben

    ,
  4. bash datei zeilenweise verarbeiten,
  5. bash datei zeilenweise ausgeben,
  6. ein eintrag pro zeile ausgeben linux shell,
  7. ein eintrag pro zeile linux shell,
  8. linux datei zeilenweise ausgeben
Die Seite wird geladen...

Dateiinhalt zeilenweise ausgeben - Ähnliche Themen

  1. 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...
  2. 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...
  3. 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...
  4. Dateiinhalte multiplizieren

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

    Keine Dateiinhalte bei Freigebenen Ordnern: Hallo Leute ich habe seit paar tagen einen Samba Server auf meinen RHEL5 aufgesetzt und bin mit einem Windows Rechner darüber verbunden. Die...