Re: [PUG] sed / tr Problem

2003-06-20 Diskussionsfäden holger . schmidt
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

2003-06-20 Diskussionsfäden Christian Schmidt
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

2003-06-20 Diskussionsfäden holger . schmidt
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

2003-06-20 Diskussionsfäden Christian Schmidt
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

2003-06-20 Diskussionsfäden holger . schmidt
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

2003-06-19 Diskussionsfäden Christian Schmidt

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