Re: [PUG] sed / tr Problem
Moin, #mungefilename () #{ # echo $@ | sed s,:,\ -,g | tr \ / __ | tr -d \'\\?\[:cntrl:\] #} Nun meine konkreten Fragen dazu, Ihr sollt mir ja nicht den kompletten Ausdruck basteln, das will ich schön selbst ausprobieren :-) tr \ / __ verstehe ich inzwischen. Und habe ihn auf tr / _ geändert. das funktioniert ?! Also bei der ersten Variante tr \ / __ wird ein Leerzeichen durch einen Unterstrich ersetzt. Eigentlich würde tr \ / _ auch reichen. Bei tr / _ wird ein Slash durch einen Unterstrich ersetzt. Den letzten Teil hab ich etwas angepasst. Es bleibt tr -d \[:cntrl:\], womit ich allerdings nicht allzu viel anfangen kann. Laut man sollte das doch nur tr -d [:cntrl:] heissen? Ich weiss nicht wo da jetzt der Unterschied liegt? -d = delete, also sollen alle dort entwerteten Zeichen (erkennbar am vorangestellten Backslash) gelöscht werden. Was ganeu wird mit [:cntrl:] gelöscht, damit ich mal was testen kann? Sch... Office-PC ... schau mal unter man perlre und suche nach cntrl (hab keinen Bock das alles abzuschreiben) Und nun zu sed. Hier verstehe ich gar nichts :-) Brauche ich es denn für meine Zwecke? (nur erlaubte Zeichen in Dateinamen) Ersetzt einen Doppelpunkt durch ein Leerzeichen gefolgt von einem Minus. Die Kommazeichen bilden die Begrenzungszeichen (auch s#:#\ _#g oder s/:/\ -/g). Ob du das brauchst, mußt du selbst entscheiden. Ciao Holger PUG - Penguin User Group Wiesbaden - http://www.pug.org
Re: [PUG] sed / tr Problem
Am Freitag, 20. Juni 2003 09:06 schrieb [EMAIL PROTECTED]: tr \ / __ verstehe ich inzwischen. Und habe ihn auf tr / _ geändert. das funktioniert ?! Also bei der ersten Variante tr \ / __ wird ein ja funktioniert :-) Leerzeichen durch einen Unterstrich ersetzt. Eigentlich würde tr \ / _ auch reichen. Bei tr / _ wird ein Slash durch einen Unterstrich ersetzt. In der man wird geschrieben, das beide Teile des Ausdrucks gleich lang sein sollten. Wenn ich also und / ersetzt haben will, sollte ich auch zwei _ benutzen. Es funktioniert zwar auch mit einem, aber sicher ist sicher :-) Den letzten Teil hab ich etwas angepasst. Es bleibt tr -d \[:cntrl:\], womit ich allerdings nicht allzu viel anfangen kann. Laut man sollte das doch nur tr -d [:cntrl:] heissen? Ich weiss nicht wo da jetzt der Unterschied liegt? Mir ging es um die \ im ersten Befehl. Was machen die da? Was ganeu wird mit [:cntrl:] gelöscht, damit ich mal was testen kann? Sch... Office-PC ... schau mal unter man perlre und suche nach cntrl (hab keinen Bock das alles abzuschreiben) Danke das reicht mir als Tip zum selber suchen aus. chris PUG - Penguin User Group Wiesbaden - http://www.pug.org
Re: [PUG] sed / tr Problem
Hallo, Mir ging es um die \ im ersten Befehl. Was machen die da? die Mail habe ich schon gelöscht, aber das war in etwa so: tr -d \'\\? Da die Zeichen ', , ? besondere Eigenschaften unter Unix haben, müssen sie bei Nichtverwendung ihrer Spezialfunktionen entwertet werden. Deshalb das Backslash davor. Heißt nix anderes als lösche Einzelanführungsstriche, Anführungsstriche und Fragezeichen. Ciao Holger PUG - Penguin User Group Wiesbaden - http://www.pug.org
Re: [PUG] sed / tr Problem
Am Freitag, 20. Juni 2003 10:05 schrieb [EMAIL PROTECTED]: Hallo, Mir ging es um die \ im ersten Befehl. Was machen die da? die Mail habe ich schon gelöscht, aber das war in etwa so: tr -d \'\\? Nein, es ging um tr -d \[:cntrl:\] Da die Zeichen ', , ? besondere Eigenschaften unter Unix haben, müssen sie bei Nichtverwendung ihrer Spezialfunktionen entwertet werden. Deshalb das Backslash davor. Heißt nix anderes als lösche Einzelanführungsstriche, Anführungsstriche und Fragezeichen. Aber gleicher Grund? Damit die [ nicht fehlinterpretiert werden? chris PUG - Penguin User Group Wiesbaden - http://www.pug.org
Re: [PUG] sed / tr Problem
Hallo, Nein, es ging um tr -d \[:cntrl:\] ups, kleines Missverständnis :-) Aber gleicher Grund? Damit die [ nicht fehlinterpretiert werden? da bin ich mir nicht sicher. Eigentlich dürften die eckigen Klammern an dieser Stelle keine Probleme bereiten. Ciao Holger PUG - Penguin User Group Wiesbaden - http://www.pug.org
[PUG] sed / tr Problem
Hi, Ich möchte, das möglichst wenig Zeichen geändert werden - genauer gesagt, nur die, die geändert werden müssen (weil Sie keine erlaubten Zeichen im Dateinamen sind), also eigentlich nur das /, oder? Der Ausschnitt kommt aus der abcde.conf: # Custom filename munging: # By default, abcde will do the following to CDDB data to get a useful # filename: # * Translate colons to a space and a dash for Windows compatibility # * Eat control characters, single quotes, and question marks # * Translate spaces and forward slashes to underscores # To change that, redefine the mungefilename function. # mungefilename recieves the CDDB data (artist, track, title, whatever) # as $1 and outputs it on stdout. #mungefilename () #{ # echo $@ | sed s,:,\ -,g | tr \ / __ | tr -d \'\\?\[:cntrl:\] #} Nun meine konkreten Fragen dazu, Ihr sollt mir ja nicht den kompletten Ausdruck basteln, das will ich schön selbst ausprobieren :-) tr \ / __ verstehe ich inzwischen. Und habe ihn auf tr / _ geändert. Den letzten Teil hab ich etwas angepasst. Es bleibt tr -d \[:cntrl:\], womit ich allerdings nicht allzu viel anfangen kann. Laut man sollte das doch nur tr -d [:cntrl:] heissen? Ich weiss nicht wo da jetzt der Unterschied liegt? Was ganeu wird mit [:cntrl:] gelöscht, damit ich mal was testen kann? Und nun zu sed. Hier verstehe ich gar nichts :-) Brauche ich es denn für meine Zwecke? (nur erlaubte Zeichen in Dateinamen) danke für die Hilfe chris PUG - Penguin User Group Wiesbaden - http://www.pug.org