brauche hilfe mit sed

Post Reply
Message
Author
marcdevil

brauche hilfe mit sed

#1 Post by marcdevil »

hi
ich habe vor meine mp3sammlung ein wenig aufzuräumen, nun zu meinem problem:

XX - xyz uvw.abc
def - xyz uvw.abc
wie isoliere ich mit sed "xyz uvw" (beliebig viele zeichen)
"def" - beliebig viele zeichen
"XX -" und ".abc" ist immer gleich lang, hat aber verschiedene zeichen
XX = 01-99
.abc = .mp3 / .MP3 / .Mp3 ...

das ganze soll an id3tool übergeben werden.

ciao

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

Re: brauche hilfe mit sed

#2 Post by heinrich »

SED ? warum nicht mal AWK nehmen ?

gegeben: ein ASCII-File mit allen MP3's mit dem Aufbau "NN - (a-zA-Z)+ (a-zA-Z)+.[mM][pP]3"

<pre>
# cat mp3liste

01 - Aphrodites_Child The_Four_Horsemen.mp3
02 - Era Ameno.mp3
03 - Herbert_Grönemeyer Bleibt_alles_anders.Mp3
04 - Laid_Back Bakerman.MP3
05 - Rambo_2 Theme.mp3
06 - The_Who My_Generation.mp3
07 - The_Who Pinball_Wizard.mp3
08 - The_Who The_Acid_Queen_[Pinball_Wizard]_(1969).mp3
09 - The_Who The_Seeker.mp3

# awk '{ printf("(%s) %s : %s\<!--no-->n", $1, $3, $4) }' mp3liste

(01) Aphrodites_Child : The_Four_Horsemen.mp3
(02) Era : Ameno.mp3
(03) Herbert_Grönemeyer : Bleibt_alles_anders.Mp3
(04) Laid_Back : Bakerman.MP3
(05) Rambo_2 : Theme.mp3
(06) The_Who : My_Generation.mp3
(07) The_Who : Pinball_Wizard.mp3
(08) The_Who : The_Acid_Queen_[Pinball_Wizard]_(1969).mp3
(09) The_Who : The_Seeker.mp3

# awk '{printf ("-number %s -interpret %s -title %s\<!--no-->n", $1, $3, $4)}' mp3liste

-number 01 -interpret Aphrodites_Child -title The_Four_Horsemen.mp3
-number 02 -interpret Era -title Ameno.mp3
-number 03 -interpret Herbert_Grönemeyer -title Bleibt_alles_anders.Mp3
-number 04 -interpret Laid_Back -title Bakerman.MP3
-number 05 -interpret Rambo_2 -title Theme.mp3
-number 06 -interpret The_Who -title My_Generation.mp3
-number 07 -interpret The_Who -title Pinball_Wizard.mp3
-number 08 -interpret The_Who -title The_Acid_Queen_[Pinball_Wizard]_(1969).mp3
-number 09 -interpret The_Who -title The_Seeker.mp3
</pre>
Last edited by heinrich on 06. Apr 2001 23:57, edited 2 times in total.

marcdevil

Re: brauche hilfe mit sed

#3 Post by marcdevil »

ok, wenn du meinst, das es mit awk besser geht, dann muss ich mir halt auch noch das awk FAQ ausdrucken.

ich probiere es mal, allerdings fehlt noch das wegschnibbeln von .mp3

User avatar
heinrich
Posts: 219
Joined: 22. Sep 1999 11:22
Location: N49.137 E8.544

Re: brauche hilfe mit sed

#4 Post by heinrich »

aah ja die Dateiendungen hatte ich doch ganze vergessen.
Da nehmen wir mal dann eben SED...

<pre>
# cat mp3liste

...wie gehabt...

# sed -e "s/\<!--no-->.[mM][pP]3$//" mp3liste

01 - Aphrodites_Child The_Four_Horsemen
02 - Era Ameno
03 - Herbert_Grönemeyer Bleibt_alles_anders
04 - Laid_Back Bakerman
05 - Rambo_2 Theme
06 - The_Who My_Generation
07 - The_Who Pinball_Wizard
08 - The_Who The_Acid_Queen_[Pinball_Wizard]_(1969)
09 - The_Who The_Seeker

voila..die Dateiendungen sind weg
nun noch das ganze mit dem AWK zusammenbauen und gut is

# sed -e "s/\<!--no-->.[mM][pP]3$//" mp3liste | awk '{printf ("-number %s -interpret %s -title %s\<!--no-->n", $1, $3, $4)}'

-number 01 -interpret Aphrodites_Child -title The_Four_Horsemen
-number 02 -interpret Era -title Ameno
-number 03 -interpret Herbert_Grönemeyer -title Bleibt_alles_anders
-number 04 -interpret Laid_Back -title Bakerman
-number 05 -interpret Rambo_2 -title Theme
-number 06 -interpret The_Who -title My_Generation
-number 07 -interpret The_Who -title Pinball_Wizard
-number 08 -interpret The_Who -title The_Acid_Queen_[Pinball_Wizard]_(1969)
-number 09 -interpret The_Who -title The_Seeker

...als nächstes stört noch der Underscore (_) im Interpretname / Titel

# sed -e "s/\<!--no-->.[mM][pP]3$//" mp3liste | awk '{ printf ("-number %s -interpret \<!--no-->"%s\<!--no-->" -title \<!--no-->"%s\<!--no-->"\<!--no-->n", $1, $3, $4) }' | sed -e "s/_/ /g"

-number 01 -interpret "Aphrodites Child" -title "The Four Horsemen"
-number 02 -interpret "Era" -title "Ameno"
-number 03 -interpret "Herbert Grönemeyer" -title "Bleibt alles anders"
-number 04 -interpret "Laid Back" -title "Bakerman"
-number 05 -interpret "Rambo 2" -title "Theme"
-number 06 -interpret "The Who" -title "My Generation"
-number 07 -interpret "The Who" -title "Pinball Wizard"
-number 08 -interpret "The Who" -title "The Acid Queen [Pinball Wizard] (1969)"
-number 09 -interpret "The Who" -title "The Seeker"

#
</pre>
Last edited by heinrich on 07. Apr 2001 12:56, edited 1 time in total.

marcdevil

Re: brauche hilfe mit sed

#5 Post by marcdevil »

meine lieder haben keine _ als Spacer !
wieso kann ich mit:
sed -e "s/[01][1-9]\ -\ $//" bckp
nicht den anfang löschen
01 - XXX YYY.mp3 => XXX YYY.mp3

Jochen

Re: brauche hilfe mit sed

#6 Post by Jochen »

Weil Du sed sagst, dass nur, wenn "s/[01][1-9]\ -\ " am Ende einer Zeile steht, dies als Treffer gelten soll. Setze anstelle des "$" hintendran ein "^" vorneweg, also<pre>sed -e "s/^[01][1-9]\ -\ //" bckp</pre>Dann gilt der Reguläre Ausdruck nur dann al Treffer, wenn er am Anfang einer Zeile steht. Voilà!

marcdevil

Re: brauche hilfe mit sed

#7 Post by marcdevil »

danke, genau das war's

wo lernt man denn so was?
man sed hilft da auch nich so viel weiter.

das mit anfang und ende löschen habe ich jetzt.
wie lösche ich alles was zwischen - und . steht und dann alles, was von anfang bis - geht?
sed -e "s/\ -\ *//" FILE1 #löscht nur -
sed -e "s/^*\ -\ //" FILE2 #macht garnix

Post Reply