sed: Alle Zahlen und Zeichen von A-z loeschen
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben. zB var="Ich_möchte_3_Äpfel_um_1€" echo "$var" | sed ... Übrig bleiben soll "öÄ€" Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Tuesday 30 June 2009 14:09:58 schrieb Al Bogner:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1€" echo "$var" | sed ...
Übrig bleiben soll "öÄ€"
Wenn es nicht unbedingt "sed" sein muß, dann geht auch "tr" echo "$var" | tr -d [a-zA-Z0-9] -- - Alexandra Widerstand ist zwecklos! Sie werden assembliert...? Absorbiert? Abserviert? Verdammt ... -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 14:33:12 schrieb Alexandra:
Am Tuesday 30 June 2009 14:09:58 schrieb Al Bogner:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1€" echo "$var" | sed ...
Übrig bleiben soll "öÄ€"
Wenn es nicht unbedingt "sed" sein muß, dann geht auch "tr" echo "$var" | tr -d [a-zA-Z0-9]
Vielen Dank, passt! Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, 30 Jun 2009 14:09:58 +0200, Al Bogner
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1" echo "$var" | sed ...
Übrig bleiben soll "öÄ"
Al
tr kann das auch, z.B.: echo "abc@ABC#000+444%äöüÄÖÜ" | tr -d "[a-z][A-Z][0-9]" Ergebnis: @#+%äöüÄÖÜ Das müsste es sein, oder? Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 14:33:25 schrieb Juergen Langowski:
On Tue, 30 Jun 2009 14:09:58 +0200, Al Bogner
wrote: Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1" echo "$var" | sed ...
Übrig bleiben soll "öÄ"
Al
tr kann das auch, z.B.:
echo "abc@ABC#000+444%äöüÄÖÜ" | tr -d "[a-z][A-Z][0-9]"
Ich verstehe den Unterschied in der Syntax nicht zu Alexandras Vorschlag: echo "$var" | tr -d [a-zA-Z0-9] Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 14:33:25 schrieb Juergen Langowski:
Das müsste es sein, oder?
Ich habe mir überlegt, dass auch selten andere Zeichen unerwünscht sein könnten und habe so erweitert: tr -d "[a-z][A-Z][0-9][ -/][:-@][\-_][{-¾]" Es bleiben 2 Zeichen übrig, die ich auch noch weg haben möchte: [ und ` Geht das auch noch in die obige tr-Pipe rein? Zur Info: Ich will an und für sich nur wissen, ob das Ergebnis leer ist oder nicht. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, 30 Jun 2009 15:42:49 +0200, Al Bogner
Am Dienstag 30 Juni 2009 14:33:25 schrieb Juergen Langowski:
Das müsste es sein, oder?
Ich habe mir überlegt, dass auch selten andere Zeichen unerwünscht sein könnten und habe so erweitert:
tr -d "[a-z][A-Z][0-9][ -/][:-@][\-_][{-¾]"
Es bleiben 2 Zeichen übrig, die ich auch noch weg haben möchte: [ und `
Geht das auch noch in die obige tr-Pipe rein?
Zur Info: Ich will an und für sich nur wissen, ob das Ergebnis leer ist oder nicht.
Al
Puh - jetzt mal geraten, nicht getestet: [\[\]] Also escapen, damit das Zeichen nicht wie eine normale Klammer ausgewertet wird. Jürgen -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 15:53:28 schrieb Juergen Langowski:
On Tue, 30 Jun 2009 15:42:49 +0200, Al Bogner
wrote: Am Dienstag 30 Juni 2009 14:33:25 schrieb Juergen Langowski:
Das müsste es sein, oder?
Ich habe mir überlegt, dass auch selten andere Zeichen unerwünscht sein könnten und habe so erweitert:
tr -d "[a-z][A-Z][0-9][ -/][:-@][\-_][{-¾]"
Es bleiben 2 Zeichen übrig, die ich auch noch weg haben möchte: [ und `
Geht das auch noch in die obige tr-Pipe rein?
Zur Info: Ich will an und für sich nur wissen, ob das Ergebnis leer ist oder nicht.
Al
Puh - jetzt mal geraten, nicht getestet: [\[\]]
Also escapen, damit das Zeichen nicht wie eine normale Klammer ausgewertet wird.
Ich denke manchmal kann man es komplizierte machen als es ist ;-) tr -d "[ -¾]" Das sollte doch auch alles bis ¾ rauswerfen und ab ¿À stehen lassen oder ist das auch locale-abhängig? Damit sollten die eckigen Klammern auch weg sein und auch ` Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, June 30, 2009 4:31 pm, Al Bogner wrote:
Ich denke manchmal kann man es komplizierte machen als es ist ;-)
tr -d "[ -¾]"
Das sollte doch auch alles bis ¾ rauswerfen und ab ¿À stehen lassen oder ist das auch locale-abhängig? Damit sollten die eckigen Klammern auch weg sein und auch `
,----[ info tr ]- | Currently `tr' fully supports only single-byte characters. | Eventually it will support multibyte characters; when it does, the `-C' | option will cause it to complement the set of characters, whereas `-c' | will cause it to complement the set of values. This distinction will | matter only when some values are not characters, and this is possible | only in locales using multibyte encodings when the input contains | encoding errors. `---- Mit freundlichen Grüßen, Christian -- :wq! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 30 Jun 2009, Al Bogner schrieb:
Am Dienstag 30 Juni 2009 14:33:25 schrieb Juergen Langowski:
Das müsste es sein, oder?
Ich habe mir überlegt, dass auch selten andere Zeichen unerwünscht sein könnten und habe so erweitert:
tr -d "[a-z][A-Z][0-9][ -/][:-@][\-_][{-?]" ^^^ ^^^ ^^^ auf diese Sequenzen solltest du dich nicht verlassen. Zumal in man ascii das ? zwischen : und @ liegt.
Es bleiben 2 Zeichen übrig, die ich auch noch weg haben möchte: [ und `
Geht das auch noch in die obige tr-Pipe rein?
tr -d '[][a-zA-Z0-9`:;<=>?@\\^{}_-]' Nur [] und - kannst du nicht an beliebiger Stelle angeben. Siehe auch man -P'less "+/A *bracket *expression"' 7 regex wo beschrieben wird, wie diese aufgebaut sind. Meinst du evtl. das hier: tr -d '[ -~]' oder tr -d '[\040-\176]' (das löscht ASCII-32 SPACE bis ASCII 126 TILDE).
Zur Info: Ich will an und für sich nur wissen, ob das Ergebnis leer ist oder nicht.
test -z "$(echo ... | tr ... )" HTH, -dnh -- 131: MSCE Führerschein für die Maus. (Thore Tams) -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 18:50:58 schrieb David Haller:
wo beschrieben wird, wie diese aufgebaut sind. Meinst du evtl. das hier: tr -d '[ -~]' oder tr -d '[\040-\176]' (das löscht ASCII-32 SPACE bis ASCII 126 TILDE).
David, es geht um die Diskussion, die wir schon mal hatten, enthält ein Text griechische, russische, etc. Zeichen, aber auch dt. Umlaute. So 100% muss es nicht sein. Spricht was dagegen das zu verwenden? | tr -d "[ -¾]" In der Praxis sieht es ganz gut aus.
Zur Info: Ich will an und für sich nur wissen, ob das Ergebnis leer ist oder nicht.
test -z "$(echo ... | tr ... )"
Danke, das ist schon klar. Alo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 30 Jun 2009, Al Bogner schrieb:
Am Dienstag 30 Juni 2009 18:50:58 schrieb David Haller:
wo beschrieben wird, wie diese aufgebaut sind. Meinst du evtl. das hier: tr -d '[ -~]' oder tr -d '[\040-\176]' (das löscht ASCII-32 SPACE bis ASCII 126 TILDE).
David, es geht um die Diskussion, die wir schon mal hatten, enthält ein Text griechische, russische, etc. Zeichen, aber auch dt. Umlaute. So 100% muss es nicht sein.
Das kommt auf die Kodierung an. Bei UTF-8 reicht es zu gucken, ob Zeichen >= 127 vorkommen. Entprechend: | tr -d '[\0-\0176].
Spricht was dagegen das zu verwenden? | tr -d "[ -?]"
Damit entfernst du nur div. Satzzeichen und 0-9. A-Z, a-z sowie @[\]_`{|}~ bleiben in der Ausgabe. Schau dir man ascii an. -dnh -- Eine Damenhandtasche ist ein mobiles Hardware-/dev/random für Frauen, wobei Frauen immer den passenden Zufall finden im Gegensatz zu den Männern. -- Oliver Schad -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 21:49:18 schrieb David Haller: Hallo David,
Spricht was dagegen das zu verwenden?
| tr -d "[ -?]"
Damit entfernst du nur div. Satzzeichen und 0-9. A-Z, a-z sowie @[\]_`{|}~ bleiben in der Ausgabe. Schau dir man ascii an.
Hast recht, wie (so gut wie) immer ;-) Bei verschiedenen Tests, war _ weg und als ich dann verkürzte habe ich nicht mehr getestet, da es zufällig in der Praxis passte. Ich denke tr -d '[\0-\176]'` sollte ok sein. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 30 Jun 2009, Al Bogner schrieb:
Ich denke tr -d '[\0-\176]'` sollte ok sein.
Denk aber auch an die nicht-druckbaren Zeichen aus dem Bereich vor Space ;) Jedenfalls, die numerische Angabe ist wohl locale-unabhängig. -dnh -- Hah! If they were going to do that, they'd be just as likely to buy some extra rope to keep the pigs from getting out of their rooftop aviary. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 23:46:31 schrieb David Haller: Hallo David,
Am Die, 30 Jun 2009, Al Bogner schrieb:
Ich denke tr -d '[\0-\176]'` sollte ok sein.
Denk aber auch an die nicht-druckbaren Zeichen aus dem Bereich vor Space ;) Jedenfalls, die numerische Angabe ist wohl locale-unabhängig.
Mit diesen unsichtbaren Zeichen werde ich sowieso gerade verrückt. Kannst du bitte mal versuchen den Track aus einer eyeD3-Abfrage in eine Variable zu schreiben, wenn der Pfad bzw. der Dateiname "track" enthält: So klappt es nicht (und das ist schon ziemlich wild) eyeD3 "$INP" | grep "track" | cut -f2 -d"]" | cut -f2 -d":" | tr '\t' "|" | cut -f1 -d"|" | tr '\t' " " | sed -e 's/^ *//g' -e 's/ *$//g' | cut -f1 -d" " Ich mache zur Kontrolle dann: TRACK=$(($TRACK*1)) Da es bisher meistens passte, bin ich recht spät darauf gekommen, dass manche Files dadurch verloren gingen. Ist zwar nicht sonderlich schlimm, weil die CD- Originale vorhanden sind, aber natürlich Arbeit einzelne Tracks auszulesen. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 00:11:57 schrieben Sie: Hallo David,
Kannst du bitte mal versuchen den Track aus einer eyeD3-Abfrage in eine Variable zu schreiben, wenn der Pfad bzw. der Dateiname "track" enthält:
So klappt es nicht (und das ist schon ziemlich wild) eyeD3 "$INP" | grep "track" | cut -f2 -d"]" | cut -f2 -d":" | tr '\t' "|" | cut -f1 -d"|" | tr '\t' " " | sed -e 's/^ *//g' -e 's/ *$//g' | cut -f1 -d"
Ich habe mittlerweile eine Lösung, bin gespannt, was du dazu sagst. EYED3TRACK=`eyeD3 "$INP" | tr '\t' ' ' | tr -d '[\000-\037]' | sed -e 's/1mtitle0m:/\ntitle:/g' -e 's/1martist0m:/\nartist:/g' -e 's/1myear0m:/\nyear:/g' -e 's/1mgenre0m:/\ngenre:/g' -e 's/1mtrack0m:/\ntrack:/g' -e 's/1malbum0m:/\nalbum:/g' -e 's/1mUnique File ID:0m /\nUnique File ID:/g' | grep "track:" | sed -e 's/track: //' -e 's/^ *//g' -e 's/ *$//g'` Ist etwas redundant, ist aber so übersichtlicher, falls doch ein Fall auftritt, bei dem man sich wundert, dass etwas nicht passt. Damit sollten auch Fälle berücksichtigt werden wo im Text ein Doppelpunkt vorhanden ist. Jedes Feld wird so in eine neue Zeile geschrieben und die Beschriebung ersetzt und nicht wie vorher mit cut definiert. Ich verstehe noch immer nicht, warum man so eine Ausgabe macht und die Felder nicht einzeln abfragen kann, oder habe ich was übersehen? Ich erinnere mich, dass ich schon mal gefragt habe was 0m und 1m für Steuerzeichen sind, finde aber die Antwort nicht mehr. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 17:01:41 schrieb Al Bogner: Hallo Al, da ich den Thread nicht komplett verfolgt habe, hier nur was zu den ANSI-Sequencen...
Ich erinnere mich, dass ich schon mal gefragt habe was 0m und 1m für Steuerzeichen sind, finde aber die Antwort nicht mehr.
http://www.robvanderwoude.com/ansi.php "Other Text Attributes" MfG Th. Moritz -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 17:34:58 schrieb Thomas Moritz:
Am Mittwoch 01 Juli 2009 17:01:41 schrieb Al Bogner:
Hallo Al, da ich den Thread nicht komplett verfolgt habe, hier nur was zu den ANSI-Sequencen...
Ich erinnere mich, dass ich schon mal gefragt habe was 0m und 1m für Steuerzeichen sind, finde aber die Antwort nicht mehr.
http://www.robvanderwoude.com/ansi.php "Other Text Attributes"
Danke, <Esc>[0m Reset all previous text attributes <Esc>[1m Bold or bright text Wie bekommt man die mit tr oder sed oder sonst was komplett weg? Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Al! On Mi, 01 Jul 2009, Al Bogner wrote:
<Esc>[0m Reset all previous text attributes <Esc>[1m Bold or bright text
Wie bekommt man die mit tr oder sed oder sonst was komplett weg?
Nicht sicher, aber ich denke, col -b müßte gehen. Mit freundlichen Grüßen Christian -- :wq! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi opensuse-de! On Mi, 01 Jul 2009, Christian Brabandt wrote:
Hi Al!
On Mi, 01 Jul 2009, Al Bogner wrote:
<Esc>[0m Reset all previous text attributes <Esc>[1m Bold or bright text
Wie bekommt man die mit tr oder sed oder sonst was komplett weg?
Nicht sicher, aber ich denke, col -b müßte gehen.
Da es hier um eyeD3 geht, sollte eyeD3 --no-color helfen. Mit freundlichen Grüßen Christian -- hundred-and-one symptoms of being an internet addict: 256. You are able to write down over 250 symptoms of being an internet addict, even though they only asked for 101. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 20:40:14 schrieb Christian Brabandt:
Hi opensuse-de!
On Mi, 01 Jul 2009, Christian Brabandt wrote:
Hi Al!
On Mi, 01 Jul 2009, Al Bogner wrote:
<Esc>[0m Reset all previous text attributes <Esc>[1m Bold or bright text
Wie bekommt man die mit tr oder sed oder sonst was komplett weg?
Nicht sicher, aber ich denke, col -b müßte gehen.
Da es hier um eyeD3 geht, sollte eyeD3 --no-color helfen.
Super Chiistian, funktioniert! Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 20:15:03 schrieb Christian Brabandt:
On Mi, 01 Jul 2009, Al Bogner wrote:
<Esc>[0m Reset all previous text attributes <Esc>[1m Bold or bright text
Wie bekommt man die mit tr oder sed oder sonst was komplett weg?
Nicht sicher, aber ich denke, col -b müßte gehen.
Braucht auch 2 Schritte: mit col -b: eyeD3 12.18-moment-aziza_mustafa_zadeh-audios_audiophile_volume_1.mp3 | col -b 1m32m12.18-moment-aziza_mustafa_zadeh-audios_audiophile_volume_1.mp30m 32m[ 968.12 KB ]0m ------------------------------------------------------------------------------- 1mTime: 0m00:45 MPEG1, Layer III [ ~173 kb/s @ 44100 Hz - Joint stereo ] ------------------------------------------------------------------------------- ID3 v2.4: 1mtitle0m: Moment 1martist0m: Aziza Mustafa Zadeh 1malbum0m: Audio's Audiophile, Volume 1: Vocals and Instruments 1myear0m: 1972 1mtrack0m: 12 1mgenre0m: Rock (id 17) 1mUnique File ID:0m [http://musicbrainz.org] 323c9567-8329-4cb2- adbd-8255f917728c 1mComment0m: [Description: ] [Lang: eng] Disc-ID 0e113912 1mComment0m: [Description: Songs-DB_Custom1] [Lang: ] 1980S 1mComment0m: [Description: Songs-DB_Custom2] [Lang: ] Female Vocalists; Female 1mUserTextFrame0m: [Description: MusicBrainz Album Type] compilation 1mUserTextFrame0m: [Description: MusicBrainz Album Artist Id] 89ad4ac3-39f7-470e-963a-56509c546377 1mUserTextFrame0m: [Description: MusicBrainz Artist Id] 98b1796d-a888-4a69-9c2a-86bfff3156f1 1mUserTextFrame0m: [Description: ALBUMARTISTSORT] Various Artists 1mUserTextFrame0m: [Description: MusicBrainz Album Id] 797916e6-c244-4c2a-ba57-817c0eb01ecc 1mUserTextFrame0m: [Description: MusicBrainz Album Release Country] DE 1mUserTextFrame0m: [Description: MusicBrainz Album Status] official Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 19:31:35 schrieb Al Bogner: Hallo Al,
http://www.robvanderwoude.com/ansi.php "Other Text Attributes"
Danke,
<Esc>[0m Reset all previous text attributes <Esc>[1m Bold or bright text
Wie bekommt man die mit tr oder sed oder sonst was komplett weg?
Wie ich schon schrub, habe ich mich mit dem ganzen Fred nicht befasst. Die Darstellung der ANSI-Codes kannst Du testen zB.: (kannst Du gefahrlos auf die Konsole loslassen) echo -e "\033[5mAl\033[0m\033[1m Bogner\033[0m" ...wie Du den Kram uebergeben bekommst, weiss ich nicht, also auch nicht, nach was Du filtern willst. MfG Th. Moritz -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 20:26:20 schrieb Thomas Moritz:
Die Darstellung der ANSI-Codes kannst Du testen zB.: (kannst Du gefahrlos auf die Konsole loslassen)
echo -e "\033[5mAl\033[0m\033[1m Bogner\033[0m"
...wie Du den Kram uebergeben bekommst, weiss ich nicht, also auch nicht, nach was Du filtern willst.
Mein Problem ist ja die umgekehrte Richtung und wie schon geschrieben, habe ich ja (hoffentlich) eine korrekt funktionierende Lösung und wollte nur wissen, ob man das besser machen kann. Hoffentlich deswegen, weil es hunderte Male passen kann und plötzlich sah ich früher rein zufällig, dass es doch nicht passt. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Wed, July 1, 2009 5:01 pm, Al Bogner wrote:
Am Mittwoch 01 Juli 2009 00:11:57 schrieben Sie:
Hallo David,
?
Ich habe mittlerweile eine Lösung, bin gespannt, was du dazu sagst.
EYED3TRACK=`eyeD3 "$INP" | tr '\t' ' ' | tr -d '[\000-\037]' | sed -e 's/1mtitle0m:/\ntitle:/g' -e 's/1martist0m:/\nartist:/g' -e 's/1myear0m:/\nyear:/g' -e 's/1mgenre0m:/\ngenre:/g' -e 's/1mtrack0m:/\ntrack:/g' -e 's/1malbum0m:/\nalbum:/g' -e 's/1mUnique File ID:0m /\nUnique File ID:/g' | grep "track:" | sed -e 's/track: //' -e 's/^ *//g' -e 's/ *$//g'`
Mir ist immer noch nicht klar, was Du eigentlich erreichen willst. Erklär doch mal bitte, was das alles soll. Was ist denn eyeD3 und was willst Du hinterher erreichen? Grüße, Christian -- :wq! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Mittwoch 01 Juli 2009 18:53:49 schrieb Christian Brabandt:
EYED3TRACK=`eyeD3 "$INP" | tr '\t' ' ' | tr -d '[\000-\037]' | sed -e 's/1mtitle0m:/\ntitle:/g' -e 's/1martist0m:/\nartist:/g' -e 's/1myear0m:/\nyear:/g' -e 's/1mgenre0m:/\ngenre:/g' -e 's/1mtrack0m:/\ntrack:/g' -e 's/1malbum0m:/\nalbum:/g' -e 's/1mUnique File ID:0m /\nUnique File ID:/g' | grep "track:" | sed -e 's/track: //' -e 's/^ *//g' -e 's/ *$//g'`
Mir ist immer noch nicht klar, was Du eigentlich erreichen willst. Erklär doch mal bitte, was das alles soll. Was ist denn eyeD3 und was willst Du hinterher erreichen?
http://linux.die.net/man/1/eyed3 (Python-Paket ist im Standard-Repo) Ich will einfach nur die Tags von mp3's richtig auslesen und dann per Skript weiterverarbeiten und das ist ziemlich komplex, da dies abhängig von der ID3- Version ist, sowie die Länge eine Rolle spielt und an welcher Stelle es geschrieben wurde. Vgl. http://www.id3.org/iTunes So richtig kompliziert wird es, bei den vielen Möglichkeiten von id3v2.4 Ich hatte bisher u.a. mit cut die eyeD3-Ausgabe auseinander geglaubt. Das macht aber Probleme, da der : nicht zwingend eindeutig ist, ein grep nach track auch nicht eindeutig ist und bei "track:" vor dem : noch ein Steuerzeichen ist. Manche musicbrainz-Synchronisierungen können es noch komplizierter machen, da dann eventuell eyeD3 nicht mehr damit klarkommt, etc. Bei der Beschränkung auf 1 Genre, bin ich bei folgender Fehlermeldung hängengeblieben: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128) Das ignoriere ich erst mal. Wenn du etwas außer exiftool kennst, mit dem man ID3-Felder gezielt _und_ problemlos auslesen kann, lass es mich wissen. Exiftool wird erst demnächst ein paar Probleme beheben, nachdem ich den Autor kontaktiert habe. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mit, 01 Jul 2009, Al Bogner schrieb:
Am Mittwoch 01 Juli 2009 00:11:57 schrieben Sie:
Kannst du bitte mal versuchen den Track aus einer eyeD3-Abfrage in eine Variable zu schreiben, wenn der Pfad bzw. der Dateiname "track" enthält:
So klappt es nicht (und das ist schon ziemlich wild) eyeD3 "$INP" | grep "track" | cut -f2 -d"]" | cut -f2 -d":" | tr '\t' "|" | cut -f1 -d"|" | tr '\t' " " | sed -e 's/^ *//g' -e 's/ *$//g' | cut -f1 -d"
Ich habe mittlerweile eine Lösung, bin gespannt, was du dazu sagst.
EYED3TRACK=`eyeD3 "$INP" | tr '\t' ' ' | tr -d '[\000-\037]' | sed -e 's/1mtitle0m:/\ntitle:/g' -e 's/1martist0m:/\nartist:/g' -e 's/1myear0m:/\nyear:/g' -e 's/1mgenre0m:/\ngenre:/g' -e 's/1mtrack0m:/\ntrack:/g' -e 's/1malbum0m:/\nalbum:/g' -e 's/1mUnique File ID:0m /\nUnique File ID:/g' | grep "track:" | sed -e 's/track: //' -e 's/^ *//g' -e 's/ *$//g'`
*uiuiui* EYED3TRACK=$(eyeD3 --no-color "$INP" | \ sed -n 's/^track:[[:space:]]*\([0-9]\+\)[[:space:]].*/\1/p') Sich die Ausgabe von eyeD3 mal per | od -c anzugucken hilft ;)
Ich verstehe noch immer nicht, warum man so eine Ausgabe macht und die Felder nicht einzeln abfragen kann, oder habe ich was übersehen?
Scheint nicht so.
Ich erinnere mich, dass ich schon mal gefragt habe was 0m und 1m für Steuerzeichen sind, finde aber die Antwort nicht mehr.
man console_codes In der Ausgabe via 'od -c' siehst du dann auch die Escapes ;) HTH, -dnh -- Vi ist für Leute, deren Hände für Emacs zu klein sind. -- Florian Diesch -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hi Al! On Mi, 01 Jul 2009, Al Bogner wrote:
Ich verstehe noch immer nicht, warum man so eine Ausgabe macht und die Felder nicht einzeln abfragen kann, oder habe ich was übersehen?
Ich hab den gestrigen Abend mich ein bißchen mit eyeD3 beschäftigt ;) Wenn ich das richtig verstehe, ist eyeD3 auch eher eine Python-API zur Manipulierung von ID3-Tags, der halt zufällig noch ein commandline Tool beiliegt, das mit dieser API erstellt wurde. Sprich, Du kannst Dir halt was entsprechendes selber schreiben ;) Ok, die Doku ist jetzt nicht so berauschend, aber ist möglich. Ich hab auch irgendwo gelesen, dass eyeD3 nicht sonderlich gut mit Images klar kommt, die iTunes oder easyTag angelegt haben. Wer weiß, ob es stimmt… So richtig scheint es kein Programm zu geben, was mit der Komplexität von ID3v2.4 klar kommt. Muß man wohl noch ein paar Jahre warten ;) Was ist eigentlich das Problem mit id3v2? Mit freundlichen Grüßen Christian -- A bug in the hand is better than one as yet undetected. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Donnerstag 02 Juli 2009 20:42:58 schrieb Christian Brabandt:
Hi Al!
On Mi, 01 Jul 2009, Al Bogner wrote:
Ich verstehe noch immer nicht, warum man so eine Ausgabe macht und die Felder nicht einzeln abfragen kann, oder habe ich was übersehen?
Ich hab den gestrigen Abend mich ein bißchen mit eyeD3 beschäftigt ;)
Interessant, dann schieße ich dann eine Frage nach ;-)
Wenn ich das richtig verstehe, ist eyeD3 auch eher eine Python-API zur Manipulierung von ID3-Tags, der halt zufällig noch ein commandline Tool beiliegt, das mit dieser API erstellt wurde. Sprich, Du kannst Dir halt was entsprechendes selber schreiben ;) Ok, die Doku ist jetzt nicht so berauschend, aber ist möglich.
Ist klar, aber ich habe beschlossen mich organisatorisch an das zu halten, was einigermaßen problemlos geht, d.h. Multitags ist gestorben und ich habe lastfmplus (Plugin von Picard) so konfiguriert, dass nur 1 Genre gewählt wird und auch nur 1 Stimmung (Mood).
Ich hab auch irgendwo gelesen, dass eyeD3 nicht sonderlich gut mit Images klar kommt, die iTunes oder easyTag angelegt haben. Wer weiß, ob es stimmt…
Das trifft mich nicht. Ich gehe von mp3s aus, die ich selber mit lame erzeugt habe und die erhalten nach dem Encodieren gar keine Tags.
So richtig scheint es kein Programm zu geben, was mit der Komplexität von ID3v2.4 klar kommt. Muß man wohl noch ein paar Jahre warten ;)
Genau. EyeD3 scheint noch trotz aller Probleme bei weitem das beste zu sein
Was ist eigentlich das Problem mit id3v2?
IMHO die Unterschiede in den Versionen 2.3 und 2.4. Bin eben beim Definieren der Tags mit eyeD3 wieder hängengeblieben. Mittlerweile gibt es aber eine exiftool-Version, mit der ich (noch) keine Probleme hatte. Ich will eigentlich nicht viel. Tags auslesen und daraus einen Dateinamen nach Bedingungen erstellen und für ein paar Zeichensätze, wie griechisch, russisch, etc. selbst definierte Transliterationen verwenden. Problematisch ist es eben, wenn immer wieder Fälle auftauchen, wo es Probleme gibt und man auf den ersten Blick nicht sieht woran es liegt. Speziell nach einer Synchronisation mit musicbrainz können Probleme auftreten, die es vorher nicht gab. Für mich stellt sich zur Zeit die Frage, wie ich ID3v2.4 UTF-8 zur ID3v2.3 UTF-16 wandle. Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tue, June 30, 2009 2:09 pm, Al Bogner wrote:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1" echo "$var" | sed ...
Übrig bleiben soll "öÄ"
Dafür gibt es die Escape-Sequence \w (die auf [a-zA-Z0-9] matched¹. Zusätzlich hat aber noch Deine locale Einfluss auf die Sonderzeichen. In einer deutschen Lokale passt nämlich äöß auch in [a-zA-Z0-9]. Daher setze Deine Locale passend: #v+ chrisbra t41:~ [1086]% echo "$var" | sed 's/\w//g' chrisbra t41:~ [1086]% locale LANG=de_DE.UTF-8 LANGUAGE=en_US:en_GB:en LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL= chrisbra t41:~ [1088]% echo "$var" |LC_CTYPE=C sed 's/\w//g' öÄ #v- Grüße, Christian __ ¹) \w ist eine Gnu Extension und geht daher nur bei Gnu Sed, IIRC. Im Zweifel halt \w durch [a-zA-Z0-9] ersetzen. -- :wq! -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am Dienstag 30 Juni 2009 14:36:08 schrieb Christian Brabandt:
On Tue, June 30, 2009 2:09 pm, Al Bogner wrote:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1" echo "$var" | sed ...
Übrig bleiben soll "öÄ"
Dafür gibt es die Escape-Sequence \w (die auf [a-zA-Z0-9] matched¹. Zusätzlich hat aber noch Deine locale Einfluss auf die Sonderzeichen. In einer deutschen Lokale passt nämlich äöß auch in [a-zA-Z0-9]. Daher setze Deine Locale passend:
Genau das war mein Problem mit sed. Danke! Al -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Al Bogner schrieb:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1€" echo "$var" | sed ...
Übrig bleiben soll "öÄ€"
Al filtert alles weg außer die definierten Zeichen:
echo "Ich_möchte_3_Äpfel_um_1€" | sed -e "s,[^ä;^ö;^ü;^Ä;^Ö;^Ü;^€],,g" Chris -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Die, 30 Jun 2009, Christian schrieb:
Al Bogner schrieb:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben. [..] echo "Ich_möchte_3_Äpfel_um_1€" | sed -e "s,[^ä;^ö;^ü;^Ä;^Ö;^Ü;^€],,g"
Was soll das? Das löscht auch "^" und ";". Jedenfalls nicht so wie du denkst. Siehe man 7 regex. sed -e "s,[^äöüÄÖÜ€],,g" -dnh -- Klar, der Unterschied zwischen Zuvieldienstleistenden und den Wehrdienstleidenden ist ja bekanntlich der, daß die Zivis mit Tod und Sterben zu tun haben und die Soldaten davon nur erzählt bekommen. -- Markus Kaufmann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo David, David Haller schrieb:
Hallo,
Am Die, 30 Jun 2009, Christian schrieb:
Al Bogner schrieb:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben. [..] echo "Ich_möchte_3_Äpfel_um_1€" | sed -e "s,[^ä;^ö;^ü;^Ä;^Ö;^Ü;^€],,g"
Was soll das? Das löscht auch "^" und ";". Jedenfalls nicht so wie du denkst. Siehe man 7 regex. nein, macht es nicht.
christian@chrisw:~> echo "Ich_möchte_^_3_Äpfel_;um_1€" | sed -e "s,[^ä;^ö;^ü;^Ä;^Ö;^Ü;^€],,g" ö^Ä;€ christian@chrisw:~>
sed -e "s,[^äöüÄÖÜ€],,g"
ok, geht auch kürzer. :)
-dnh
? Chris -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Al Bogner schrieb:
Wie lösche ich mit sed in einer Variablen alle Zahlen und Zeichen von A-Z und a-z, ö soll also zB erhalten bleiben.
zB
var="Ich_möchte_3_Äpfel_um_1€" echo "$var" | sed ...
Übrig bleiben soll "öÄ€"
Al
Wenn es sed sein soll. dann z.B.: sed -e 's/[0-9abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]*//g' (soll eigentlich in eine Zeile;-) Der Unterstrich '_' kann ggf. durch Leerzeichen ' ' ersetzt, weiter Zeichen können hinzugefügt werden. Offensichtlich enthalten die Kurzformen (alpha, lower, upper, etc.) auch die Umlaute und schlucken diese mit. -- Mit freundlichen Grüßen Martin Blank -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (8)
-
Al Bogner
-
Alexandra
-
Christian
-
Christian Brabandt
-
David Haller
-
Juergen Langowski
-
Martin Blank
-
Thomas Moritz