Anzeige:
Ergebnis 1 bis 5 von 5

Thema: awk und split

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.09.2005
    Beiträge
    23

    awk und split

    Hallo,

    ich habe ein Problem mit AWK und der dazugehoerigen SPLIT Funktion.
    Ich möchte in einem Shell script (ash aus der busybox 1.8.2) einen Dateinamen vom dazugehoerigen Pfad trennen.

    Leider bleibt mein Script dabei immer stecken.
    Ich habe den Befehl nun mal aus dem Script geloest und fuehre ihn in der Shell aus:

    # /usr/bin/awk '{n=split("/home/user/datei.tar",tmp,"/");print tmp[n]}'

    Nach dem bestaetigen bleibt die Shell an der Stelle stehen.
    Druecke ich einmal ENTER erscheint eine Leerzeile und darauf folgt "datei.tar"
    Bei jedem weiteren druecken der ENTER Taste erscheint eine weitere Leerzeile und dann die Datei.

    Kann mir jemand sagen woher diese Leerzeilen kommen?
    Ich habe schon mit Semikolons etc probiert, war aber nicht erfolgreich.

    Ich waere fuer jeden Tipp dankbar.

    Gruss
    Tobias

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.09.2005
    Beiträge
    23
    Ich bin gerade ueber basename gestolpert und das scheint genau das zu sein was ich brauche.... wenn aber jemand eine Erklaerung fuer mein awk Problem hat, waere ich trotzdem fuer eine Erklaerung dankbar

    Gruss
    Tobias

  3. #3
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    warum soll das nicht gehen?
    Code:
    echo /home/user/datei.tar | awk '{n=split($0,tmp,"/");print tmp[n]}'
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  4. #4
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo.
    Zitat Zitat von rtsx Beitrag anzeigen
    Kann mir jemand sagen woher diese Leerzeilen kommen?
    awk verarbeitet soweit ich weiß die Eingabe zeilenweise. In deinem Beispiel liest awk von stdin und fängt erst mit der Arbeit an, wenn es ein Newline oder ein EOF (+ ein vorherig eingegebenes Zeichen) gelesen hat (da du vor deinem Funktionsblock kein Muster/Pattern angegeben hast, wird der Code für jede Eingabezeile ausgeführt).
    Um Code vor der Eingabe von Zeichen ausführen zu können, gibt es das BEGIN Statement. Laut Wikipedia beendet sich dann awk auch gleich, wenn sonst keine Pattern und Actions angegeben sind.

    Code:
    [florian@leuchtturm1 ~]$ awk 'BEGIN {n=split("/home/user/datei.tar",tmp,"/");print tmp[n]}'
    datei.tar
    Gruß, Florian
    Ein gebrechlich Wesen ist der X-Server.

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.09.2005
    Beiträge
    23
    Hi,

    dankeschoen fuer die beiden Tipps, funktionieren beide einwandfrei.

    Danke auch fuer die Erklaerung, das scheint mein Problem gewesen zu sein

    Gruss
    Tobias

Lesezeichen

Berechtigungen

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