Shell script - Zerteilen eines Textstrings

T

treki

Grünschnabel
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
 
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: )
 
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)

Code:
DieDatei=`cat textdatei | sed "s/.*\//\"/"`
DerPath=`cat textdatei | sed "s/.*(//" | sed "s/[\.\@0-9\,\-]*.jpg.*/"/"`
UUOC, sed kannst du direkt ne Datei als Argument übergeben.
 
Zuletzt bearbeitet:
kk ich dachte das verdeutlicht die sache ... wenn er noch nicht mal sed kennt (*hgrmpf* dann kennt er auch kein cat) ...
 
wenn er noch nicht mal sed kennt (*hgrmpf* dann kennt er auch kein cat) ...

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.
 
*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
 
Zuletzt bearbeitet:
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.
 
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
 

Ähnliche Themen

Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt

Windows clients können nicht mehr auf lange laufendes System zugreifen

Basteln eines Shell Scripts!

Updates per Shell Script überprüfen

Probleme mit Shell-Script (Listen, Strings, etc.)

Zurück
Oben