Shell script - Zerteilen eines Textstrings

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von treki, 26.05.2007.

  1. treki

    treki Grünschnabel

    Dabei seit:
    26.05.2007
    Beiträge:
    9
    Zustimmungen:
    0
    Hallo Liebe Shell Expreten!
    Ich bin seit 1 Woche dabei kleinere Shellscripte zu schreiben die mir das Leben auf der Arbeit etwas erleichtern sollen :)

    Leider hänge ich jetzt seit meheren Tagen an ein Problem bei dem ich Hilfe brauche.

    ich habe eine Text Datei in der folgender string steht:

    N111 = SFileIn("/Volumes/disk3s1/worklfowtest/111/111.1-7,16-26,31-97,99-100@@@@@@.jpg",


    Aus dieser Zeile muss ich 2 Texteile beziehen:

    1. den Pfad : "/Volumes/disk3s1/worklfowtest/111/"
    2. die Datei: "111.1-7,16-26,31-97,99-100@@@@@@.jpg"



    Leider weiß ich wirklich nicht wie die Textzeile auseinander trennen kann :(

    Weiß von euch vielleicht jemand wie ich das hinbekomme ?

    Tausend Dank :-D

    Schönen Gruß
    Mike
     
  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. b00

    b00 Haudegen

    Dabei seit:
    28.03.2007
    Beiträge:
    597
    Zustimmungen:
    0
    Ort:
    /root
    Code:
    DieDatei=`cat textdatei | sed "s/.*\//\"/"`
    DerPath=`cat textdatei | sed "s/.*(//" | sed "s/[\.\@0-9\,\-]*.jpg.*/"/"`
    
    ja ich denke das sollte zur veranschaulichung reichen :brav:
    nein ehrlich sed und awk sollte man beherschen
    (da ichs selbst noch nicht 100%ig drauf deshalb dieser codeschnipsel :rtfm: )
     
  4. #3 smg, 26.05.2007
    Zuletzt bearbeitet: 26.05.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Code:
    mypath=$(sed -n '/^N111/{s/.*("\(.*\)",/\1/;p}' DEINE_DATEI)
    Falls du eine Bash benutzt:

    Code:
    echo ${mypath##*/}
    => 111.1-7,16-26,31-97,99-100@@@@@@.jpg
    Code:
    echo ${mypath%/*}
    => /Volumes/disk3s1/worklfowtest/111

    Wenn nicht:
    Code:
    basename $mypath
    => 111.1-7,16-26,31-97,99-100@@@@@@.jpg
    Code:
    sed 's/\(.*\)\/.*$/\1/' <<< $mypath
    => /Volumes/disk3s1/worklfowtest/111

    Um das natürlich in Variablen zu speichern jeweils:
    Code:
    datei=${mypath##*/}
    pfad=${mypath%/*}
    bzw.:
    Code:
    datei=$(basename $mypath)
    pfad=$(sed 's/\(.*\)\/.*$/\1/' <<< $mypath)
    UUOC, sed kannst du direkt ne Datei als Argument übergeben.
     
  5. b00

    b00 Haudegen

    Dabei seit:
    28.03.2007
    Beiträge:
    597
    Zustimmungen:
    0
    Ort:
    /root
    kk ich dachte das verdeutlicht die sache ... wenn er noch nicht mal sed kennt (*hgrmpf* dann kennt er auch kein cat) ...
     
  6. buli

    buli Debianator

    Dabei seit:
    16.09.2006
    Beiträge:
    789
    Zustimmungen:
    0
    Ort:
    Essen/Ruhrgebiet
    Was hat das damit zu tun?
    cat ist für Linuxer alltäglicher Sprachgebrauch.
    Wobei man bei sed etwas mehr Übung braucht.

    Kommt mir etwas hochnäsig vor, dein Kommentar.
     
  7. #6 b00, 26.05.2007
    Zuletzt bearbeitet: 26.05.2007
    b00

    b00 Haudegen

    Dabei seit:
    28.03.2007
    Beiträge:
    597
    Zustimmungen:
    0
    Ort:
    /root
    *heul* da hasst du mich missverstanden ...

    ich dachte cat wird treki kennen und muss die dateioption von sed nicht noch verkraften
    nach smg's posting ist mir aufgefallen das es viellecht doch besser währe a) das gleich richtig zu machen b) dass er vielleciht doch cat nicht kennt und das zusätzlich verwirrt ...


    das sollte auf keinen fall überheblich sein!

    :think: beim 2. mahl lesen: doch kann man falsch verstehen

    ich wiederrufe den 19:03 post wegen synapsenfehlleitung

    danke buli
     
  8. Anzeige

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

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Will hier jetzt nicht zu Offtopic werden, aber beim Sed Aufruf musst du einfach hinten die Datei als Parameter anhängen wie in meinem Post, also da muss er kein Switch hinzufügen.
     
  10. #8 Wolfgang, 27.05.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich glaube ich sollte useless use of cat mal oben anpinnen.

    Fast alle dateibezogenen Unix-Tools haben einen Parameter, der eine Datei erwartet. Sed ist schließlich ein editor. Wer eine Datei erwartet, kann selbstverständlich auch von STDIN lesen.

    Das gilt für grep, awk, cat, less more ed vim ...

    Das Problem bei sed ist für Vile dann auch weniger der Dateiinput, als vielmehr die Regulären Ausdrücke samt Ersetzungsoptionen.

    Gruß Wolfgang
     
Thema:

Shell script - Zerteilen eines Textstrings

Die Seite wird geladen...

Shell script - Zerteilen eines Textstrings - Ähnliche Themen

  1. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  2. Shellscript für rotierende Datensicherung

    Shellscript für rotierende Datensicherung: Hallo, ich beschäftige mich erst seit ein paar Wochen mit der Shell und habe mich entschlossen meine ersten Scripterfahrungen in diesem kleinen...
  3. Shellscript unerwartetes Dateiende

    Shellscript unerwartetes Dateiende: Hallo zusammen, folgendes Script führe ich in einer .bat via cygwin und curl aus. Beim Ausführen erhalte ich die einen Syntaxfehler:...
  4. shell-script mit plink starten

    shell-script mit plink starten: Hallo, auf meinem kleinen QNAP-Backupserver möchte ich von meinem Windows 7 PC mittels Windows-Batch ein kleines shell script starten. So sieht...
  5. Einfaches Shellscript - dateinamen ändern

    Einfaches Shellscript - dateinamen ändern: Hey, kann mir jemand vielleicht bei diesem miniscript helfen? ich habe dateien die folgendermaßen aussehen MM-DD-YY-dateiname und...