tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
23
ZUGRIFFE
1164
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    für das austauschen von Daten in einer Datei nehm ich bevorzugt sed her.
    Der ist zwar etwas "umständlich" zu bedienen, aber schnell und kann so ziemlich alles was man braucht.

    Zu deiner Problemstellung könntest du etwas wie folgt verwenden:
    Code bash:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    # Aus der Serverconfig etwas auslesen, hier "sv_password"
    value=$( grep sv_password /pfad/zur/Server.cfg | sed -e 's/^[[:space:]]*sv_password[[:space:]]\+"\([^"]*\)"/\1/' )
     
    # Schauen ob das Feld "password=" bereits in der Zielconfig vorhanden ist
    grep password= /pfad/zur/Config &>/dev/null
     
    if [[ $? -eq 0 ]]; then  # Vorhanden!
      sed -i /pfad/zur/Config -e "s/^\(password=\).*$/\1${value}/"
    else  # Nicht vorhanden!
      echo "password=${value}" >/pfad/zur/Config
    fi

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  2. #17
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    funktioniert schon ganz gut das was allerdings leichte Probleme macht ist wenn er an den Punkt "logfile" kommt

    wenn er da $log einsetzen soll

    welches ../../mod/pfad enthalten gibts Probleme

    sed -i /pfad/zur/Config -e "s/^\(password=\).*$/\1${value}/"
     

  3. #18
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    dies liegt daran, dass in dem Wert Slashes vorkommen (Diese da: / ).
    Somit musst du bei sed einen anderen Delimiter wählen, oder den String escapen.

    Code bash:
    1
    
    sed -i /pfad/zur/Config -e "s|^\(log=\).*$|\1${log}|"

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  4. #19
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Irgendwo habe ich da nen Denkfehler

    Code :
    1
    
    sed -i /home/$fdpfad/mods/manuadminmod/config/config.cfg -e "s/^\(logfile[[:space:]]=[[:space:]]\).*$|\1"\"${log}\""|"
     

  5. #20
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Joa,

    du hast bei deinem sed-Befehl den Delimiter nicht überall geändert, es sollte wie folgt heißen:
    Code bash:
    1
    
    sed -i /home/$fdpfad/mods/manuadminmod/config/config.cfg -e "s|^\(logfile[[:space:]]+=[[:space:]]+\).*$|\1${log}|"

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  6. #21
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Hmmm nö er mag mich ned, geht nicht
     

  7. #22
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    hehe nu mag es ! Klasse

    Einen Bug gibts noch

    Wenn in der Server.cfg die Rcon Anweisung so steht:

    //set sv_rconpassword "Ihr Admin Passwort" --- Rcon Einstellungen
    set rcon_password "topsecret"

    kommt er durcheinander. Hat jemand eine Idee das er die Zeile nimmt die nicht auskommentiert ist.


    Code :
    1
    
    rcon=$( grep set[[:space:]]rcon_password $home/$log1/server.cfg | sed -e 's/^[[:space:]]*set[[:space:]]rcon_password[[:space:]]\+"\([^"]*\)"/\1/' )
     

  8. #23
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Jo sorry, die "+" müssen auch escaped werden

    Code bash:
    1
    
    sed -e "s|^\(logfile[[:space:]]\+=[[:space:]]\+\).*$|\1${log}|"

    // Edit: Zu deinem neuen Beitrag:
    Er sollte nicht durcheinander kommen, da du ja bei dem RegEx mit dem "^" nach dem Delimiter den Zeilenanfang markierst. Somit sollt er auf den Kommentar nicht zutreffen.
    Ansonsten kannst ja noch den Modifier "g" (global) hinten an den RegEx dranhängen:

    /suchen/ersetzen/g

    // Edit2: Habs gerade getestet, er liefert das korrekte Ergenbis "topsecret" zurück, auch ohne den Modifier.

    Gruß
    BK
    Geändert von Bratkartoffel (01.10.10 um 12:47 Uhr)
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  9. #24
    schlawiner schlawiner ist offline Mitglied
    Registriert seit
    Sep 2010
    Beiträge
    24
    Hi,

    ja erstmal muss ich sagen, entschuldigen brauch sich keiner`g. So gut wie Du mir **** geholfen hast kann ich nur auf die Füsse fallen`g.

    Mal vielen Dank.


    Eigentlich hab ich alles was ich brauche und es ****t nun alles. Eine Idee die ich mir überlege ein zu bauen wäre ein Limit für die Neuinstalls.

    Die Überlegung ist dies Anhand von logfiles zu erledigen. Sprich ich gebe dem ichs etze eine Vari 2 in der Config so hat er 2 Neuinstalls in einem Monat zur Verfügung.
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.10.05, 13:11
  2. Antworten: 2
    Letzter Beitrag: 25.11.04, 01:58
  3. str_replace erst nach bestimmten Abschnitt
    Von PhoenixDH im Forum PHP
    Antworten: 2
    Letzter Beitrag: 20.10.04, 10:01
  4. Antworten: 1
    Letzter Beitrag: 09.09.04, 18:57
  5. Antworten: 6
    Letzter Beitrag: 26.02.04, 10:53