Koplizierte Sache.. AWK oder SED ??

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von rabadag, 24.05.2010.

  1. #1 rabadag, 24.05.2010
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Hallo Forum und Unix Freunde.

    Bin mal wider an einem Punkt gelang wo ich nicht weis wie ich das Script zum renne bringe.

    Ziel ist es mittels for e in ls -a *.conf $dir do;

    In jedem gefundenen File bestimmte Zeilen auszulesen und kürzen und in Variable die ich später benötige abzulegen.

    Was ich bisher habe.

    Code:
    #!/bin/sh
    #--Createt by Rabadag--------------------------------------------------
    # Global variables:
    PIDCCCAM=/var/run/AM.pid
    CCCAMEXEC=/usr/local/etc/servers/bin/server.bin
    CCCAMDIR=/usr/local/etc/servers/bin/
    CONFIGS=/usr/local/etc/servers/config
    CCCAMDISC="My Server"
    
    
    cd $CONFIGS
                for e in `ls -a *.conf`; do
    	cat $CONFIGS/$e | grep "USERNAME" | sed -e '/^#.*/d' | awk -F "USERNAME : "  {'print $2'} > /tmp/user.txt;
    	cat $CONFIGS/$e | grep "PASSWORD" | sed -e '/^#.*/d' | awk -F "PASSWORD : "  {'print $2'} > /tmp/pass.txt;
    	cat $CONFIGS/$e | grep "LISTEN PORT" | sed -e '/^#.*/d'| awk -F "LISTEN PORT : "  {'print $2'} > /tmp/port.txt;
        
    	  USER=$(cat /tmp/user.txt)
    	  PASS=$(cat /tmp/pass.txt)
    	  PORT=$(cat /tmp/port.txt)
    
    	    echo $USER
    	    echo $PASS
    	    echo $PORT
    	   
    	    URL="http://$USER:$PASS@localhost:$PORT"
    	    echo $URL
    	    
                  if  wget -T 4 -t 3 $URL 
                  then 
                  echo "$e ok" 
                    else
                     echo "$e nicht ok"
    fi
    done
    
    
    Prob1

    Leider geht das ganze nicht so wie ich das gerne hätte.
    Das Pattern
    USERNAME : Test
    auch mal so sein kann
    USERNAME:TEST oder : Test

    So nüzt mir das AWK nicht fiel und mit sed versteh ich mich zu wenig um nach dem Doppelpunkt lehrreichen zu entfernen.

    Prob 2
    Die Variable $URL zeigt mit leider nur http://Test:@127.0.0.1:55001 als wären in den Variablen resp Files die angaben mit enter Zeichen drin.

    Kann mir bitte jemand Behilflich sein das zu rennen zu bringen!!

    besten Dank im Voraus
     
  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 tuxlover, 25.05.2010
    tuxlover

    tuxlover Der den Tux knuddelt

    Dabei seit:
    26.10.2005
    Beiträge:
    2.106
    Zustimmungen:
    0
    Ort:
    berlin
    Ich glaube das Problem liegt eher woanders. Suche mal nach Regular Expressions ;)
     
  4. #3 Greenleon, 25.05.2010
    Zuletzt bearbeitet: 25.05.2010
    Greenleon

    Greenleon Tripel-As

    Dabei seit:
    08.01.2007
    Beiträge:
    184
    Zustimmungen:
    0
    Wundert mich stark, dass der ueberhaupt so weit kommt.
    Erst wechselst du mit cd in $CONFIGS und dann cattest du noch $CONFIGS/$e. Das '$CONFIGS/' erscheint mir da zu viel des Guten.

    Edit: Oops, hab uebersehen, dass das ein absoluter Pfad ist. Shame on me.

    Kannst du das naechstes mal ein bisschen schoener einruecken? :D
     
  5. #4 rabadag, 25.05.2010
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Hmm.. Ja damit kenne ich mich leider noch nicht so gut aus.
    All die Möglichkeiten richtig zu erkennen ist gar nicht einfach..

    Hab jetzt mal das ganze soweit mit der Zeiel
    Code:
    cat $CONFIGS/$e | grep "USERNAME" | sed -e '/^#.*/d' | awk -F "USERNAME" {'print $2'} | awk -F ":" {'print $2'} > /tmp/user.txt;
    Das Ergebnis im Textfiel.
    username^

    Sollte aber so sein
    username

    also die zwei Lehrschläge weg und das Umbruchzeichen am ende..
     
  6. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    vielleicht löscht Du noch die Leerzeichen, während die Variable eingelesen wird....
    Code:
    [FONT="Courier New"]USER="`grep "USERNAME" $CONFIGS/$e | sed -e '/^#.*/d' | [B]sed -e 's/ //g[/B] | awk -F "USERNAME" {'print $2'} | awk -F ":" {'print $2'}`"[/FONT]
    
    Du kannst die Variable übrigens auch gleich beschreiben und musst nicht den Umweg in die Temp-File nehmen...
     
  7. #6 rabadag, 26.05.2010
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0

    Das funktioniert schon ganz gut..

    aber wie kriege ich noch das Umschlag Zeichen am ende weg?
    Inhalt Variable $USER = username^
    Denn die Ausgabe der URL ist falsch
    user
    :pass
    :@host:port
    anstelle von
    user:pass:host:port
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. HBtux

    HBtux Linuxer

    Dabei seit:
    13.04.2010
    Beiträge:
    72
    Zustimmungen:
    0
    Ort:
    $HOME
    Wenn es das "^"-Zeichen ist ---> wie folgt....
    Code:
    [FONT="Courier New"]USER="`grep "USERNAME" $CONFIGS/$e | sed -e '/^#.*/d' | sed -e 's/ //g' [B]| sed -e 's/\^$//g'[/B] | awk -F "USERNAME" {'print $2'} | awk -F ":" {'print $2'}`"[/FONT]
    
    Es könnte aber auch eine falsch kopierte Datei sein, in der am Ende jeder Zeile ein Zeichelumbruch steht.... (DOS-Format)
    Diese erkenntst Du am "^M" Zeichen am Ende einer Zeile, wenn Du die Datei mit vi öffnest....
     
  10. #8 rabadag, 29.05.2010
    Zuletzt bearbeitet: 29.05.2010
    rabadag

    rabadag Mitglied

    Dabei seit:
    21.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Hmm da hast du allerdings Recht, es ist dos Format mit dem ^m Zeichen dahinter.

    das interessante aber, ist: Ich übertrage mittels scp das fiele auf den Server
    Auf dem Quellserver hab ich kein dos Format. aber auf dem Zielserver wo auch das Script hin soll schon. seit wann ändert SCP Formate? Ist mir unlogisch.

    OK wie muss nun die ziele aussehen für das ^m zu entfernen?
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    oh habs grad selbst gefunden..

    Die lösung mittels
    tr -d '\r$'

    Das Funktioniert..
     
Thema:

Koplizierte Sache.. AWK oder SED ??

Die Seite wird geladen...

Koplizierte Sache.. AWK oder SED ?? - Ähnliche Themen

  1. In eigener Sache: Neue, stark verbesserte Suchfunktion

    In eigener Sache: Neue, stark verbesserte Suchfunktion: Pro-Linux läuft nun mit der erneuerten Version 1.5 des Content Management Systems NB3. Die wichtigste sichtbare Änderung ist die neue, auf der...
  2. Offener Brief an die Apache Foundation in Sachen OpenOffice

    Offener Brief an die Apache Foundation in Sachen OpenOffice: Gnome-Entwickler Christian Schaller hat einen offenen Brief an die Apache Foundation und das Apache OpenOffice Team gerichtet mit der Bitte,...
  3. In eigener Sache: Downtime

    In eigener Sache: Downtime: Heute Abend wird Pro-Linux wegen Wartungsarbeiten vorübergehend nicht erreichbar sein. Die Arbeiten werden um 20 Uhr beginnen und sollten im...
  4. Canonical ändert seine Politik in Sachen Shopping-Linsen

    Canonical ändert seine Politik in Sachen Shopping-Linsen: Canonical hatte mit der Einführung der Shopping-Linsen, den sogenannten Scopes keine glückliche Hand. Bei Unity 8 werden die Linsen nicht mehr...
  5. Debian vertraut Paketbetreuern in Sachen Systemd-Abhängigkeiten

    Debian vertraut Paketbetreuern in Sachen Systemd-Abhängigkeiten: Der technische Ausschuss von Debian (CTTE) hat in einer zweiten Abstimmungsrunde beschlossen, derzeit keine Regel zu erlassen, die bestimmt, ob...