[FRAGE] Zeichen löschen mit sed

Plage

Well-Known Member
hallo,

ich komm bei schritt drei und vier nicht weiter. an irgendwas stört der sich. hab auch schon etliche tutorials durch.

bin dankbar für jeden link, tip etc.

Code:
#!/bin/sh

# 01 - FUNKTIONIERT - unötige Zeilen löschen
sed -e '/#/d' "/home/profil/TEST/Quelle.m3u" > "/home/profil/TEST/01.txt"
#cat "/home/profil/TEST/Quelle.m3u" | sed -e "/#/d" > "/home/profil/TEST/01.txt"

# 02 - FUNKTIONIERT - Endungen wie .mp3 oder .ogg entfernen
sed -e 's/.\{4\}$//' "/home/profil/TEST/01.txt" > "/home/profil/TEST/02.txt"

# 03 - FUNKTIONIERT NICHT - Löschen der ersten 27 Zeichen jeder Zeile [../../../03 - Mukke/Mukke/]
sed -e 's/..\/..\/..\/03 - Mukke\/Mukke\////' "/home/profil/TEST/02.txt" > "/home/profil/TEST/03.txt"

# 04 - Löschen von bestimmten zeichen Folgen wie "A - E/" UND "K - O/"
sed -e 's/A - E\////' "/home/profil/TEST/03.txt" > "/home/profil/TEST/Ergebniss.txt"

Code:
#EXTM3U
#EXTINF:143,Ska Beat
../../../03 - Mukke/Mukke/A - E/Ellis, Alton/Alton Ellis - Ska Beat.mp3
#EXTINF:162,Housewives Choice
../../../03 - Mukke/Mukke/Derrick & Patsy - Housewives Choice.mp3
#EXTINF:139,Jamican Ska
../../../03 - Mukke/Mukke/K - O/Lee, Byron/Byron Lee & The Dragonaires - Jamican Ska.mp3
 
Für den dritten Fall eignet sich cut:

Code:
cut -c 27- "/home/profil/TEST/02.txt" > "/home/profil/TEST/03.txt"

Und in Zeile 4 scheint es, als hättest du einfach einen Schrägstrich zu viel:

Code:
sed -e 's/A - E\///' -e 's/K - O\///' "/home/profil/TEST/03.txt" > "/home/profil/TEST/Ergebniss.txt"

funktioniert bei mir einwandfrei.

NACHTRAG:

Wenn du generell Verzeichnisse wie A - E oder K - O entfernen willst, eignet sich folgender sed-Aufruf:

Code:
sed -e 's/^. - .\///' "/home/profil/TEST/03.txt" > "/home/profil/TEST/Ergebniss.txt"
 
och, das ging ja schnell. danke. wollte eigentlich hier nochmal meine visualierung meines problems schrieben. mach ich aber trotzdem. deine tips werde ich mal ausprobieren.

kmbauwr8.jpg
 
Du hast in Zeile drei einen Slash zuviel, quasi: s/foo/bar// das geht natuerlich nicht. Wenn das Symbol / oefters vorkommt, dann kannst du auch auf ein anderes Symbol ausweichen. Das hier ist auch gueltige Syntax fuer den s/// Befehl:
s,foo,bar,
s@/foo/bar@@

etc.
 
ich hab da noch ne frage: kann man zeichenfolgen auch auslagern? so nach dem motto:

sed -e '/home/profil/wegdamit.txt' ?



NACHTRAG:

Wenn du generell Verzeichnisse wie A - E oder K - O entfernen willst, eignet sich folgender sed-Aufruf:

Code:
sed -e 's/^. - .\///' "/home/profil/TEST/03.txt" > "/home/profil/TEST/Ergebniss.txt"
ja genau das hätte ich danach gesucht :-)

Du hast in Zeile drei einen Slash zuviel, quasi: s/foo/bar// das geht natuerlich nicht. Wenn das Symbol / oefters vorkommt, dann kannst du auch auf ein anderes Symbol ausweichen. Das hier ist auch gueltige Syntax fuer den s/// Befehl:
s,foo,bar,
s@/foo/bar@@

etc.
werd ich mir mal angucken.
 
Du lagerst keine "Zeichenfolgen" aus, sonder Befehle fuer sed(1). Das geht natuerlich, schau einfach mal in die man-page.
 
Du lagerst keine "Zeichenfolgen" aus, sonder Befehle fuer sed(1). Das geht natuerlich, schau einfach mal in die man-page.
hmm, hab da mal geschaut, bin aber nicht klug geworden. ich will ja keine begfehle auslagern sondern das wa sich löschen will. der befehl sollte ja eindeutig sein und die sammlung der zu löschenden zeichenfolgen in eine andere datei ausgelagert werden.

ich guck mir das morgen aber noch an ...
 
sollte so gehen:
Code:
echo 'DEINEZEICHENFOLGE' > datei
sed -e "s/foobar/`cat datei`/" /pfad/zur/datei2
 
zu #3:
Code:
sed -e 's/.{27}//' /pfad/zur/datei

zu #4:
Code:
sed -e 's@[A-K/]@@' /pfad/zur/datei
so vielleicht oder wurde es bereits gelöst?
 
Zurück
Oben