Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Bash-Script Datei öffnen, einlesen, Werte verändern und neu schreiben

  1. #1
    Registrierter Benutzer
    Registriert seit
    Feb 2021
    Beiträge
    7

    Bash-Script Datei öffnen, einlesen, Werte verändern und neu schreiben

    Hallo an alle,

    ich versuche folgendes umzusetzen.
    Ein Bash-Skript ließt die Verzeichnisstruktur ein und schreibt sie in eine Datei, was soweit funktioniert.
    Jetzt möchte ich die Datei wieder einlesen und nur den Namen und die Domain verwenden.
    Das Ergebnis soll dann so aussehen: Name@Domain

    Hier mal meine Skriptdatei:
    Code:
    #!/bin/bash
    
    Verzeichnisse="$(find /var/vmail -mindepth 1 -maxdepth 2  -print)"
    Inhalt=$(echo -e "$Verzeichnisse \n")
    
    while read pfad
    do
    echo "Pfad: $pfad" >> verzeichnis
    done <<< $Inhalt
    Der Inhalt der Datei Verzeichnis sieht dann so aus:

    Pfad: /var/vmail/meine-domain.com
    Pfad: /var/vmail/meine-domain.com/max
    Pfad: /var/vmail/meine-domain.com/werner
    Pfad: /var/vmail/wasauchimmer.de
    Pfad: /var/vmail/wasauchimmer.de/frank

    Wenn ich jetzt das Skript erweitere, erhalte ich folgende Ausgabe:
    Code:
    ....
    Benutzer="$(cat verzeichnis | grep 'Pfad:' | cut -d "/" -f 5)"
    echo "$Benutzer"
    Pfad="$(cat verzeichnis | grep 'Pfad:' | cut -d "/" -f 4)"
    echo "$Pfad"
    in der Konsole:

    max
    werner
    frank
    meine-domain.com
    wasauchimmer.de

    Wie muß ich die Strings verketten, das dann folgendes Ergebnis erscheint?
    Beispiel: max@meine-domain.com

    Gruß Fritz

  2. #2
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.144
    In deinem Fall

    Code:
    echo "$Benutzer@$Pfad"
    oder um quoting/escaping Probleme zu vermeiden


    Code:
    echo "${Benutzer}@${Pfad}"
    sowas nennt man concatinieren.

    Aber Statt mit Variablen rumhampeln, kann man das auch direkt machen.
    Code:
    cat verzeichnis | grep 'Pfad:' |  awk -F'[/]' '{print $5"@"$4}'
    Geändert von Huhn Hur Tu (17.08.21 um 10:00 Uhr)
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  3. #3
    Registrierter Benutzer
    Registriert seit
    Feb 2021
    Beiträge
    7
    Danke für die Antwort, es funktioniert wunderbar mit

    Code:
    cat verzeichnis | grep 'Pfad:' |  awk -F'[/]' '{print $5"@"$4}'
    und wenn ich dann noch ein

    Code:
    sed -i /^@/d  verzeichnis
    darunter setze, erhalte ich nur die Namen@Domain, so wie ich es wollte
    Super, Problem gelöst.

    Gruß Fritz

Ähnliche Themen

  1. Gnuplot im Bash-Script: Daten aus Datei auslesen und verändern
    Von Nikigraus im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 30.07.10, 10:46
  2. sed: zählschleife und werte in Datei schreiben
    Von tholle im Forum Anwendungen Allgemein, Software
    Antworten: 6
    Letzter Beitrag: 13.01.10, 05:49
  3. Antworten: 5
    Letzter Beitrag: 13.01.05, 09:18
  4. Fehler beim öffnen,schreiben einer Datei
    Von Henne im Forum Linux als Server
    Antworten: 7
    Letzter Beitrag: 10.11.04, 14:50
  5. Bash: Hintereinander in Datei schreiben
    Von netmaster im Forum Linux Allgemein
    Antworten: 1
    Letzter Beitrag: 22.07.04, 14:49

Lesezeichen

Berechtigungen

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