Thread Eckige Klammern aus Verzeichnisnamen entfernen
(6 answers)
Opened by Sapperlot at 2016-05-24 19:13
Wenn man weiß, wie man richtig Shell programmiert [1], dann kann man auch Strings mit Leerzeichen und auch eckingen Klammern drin verarbeiten. Der Trick ist im Prinzip nur, dass um alle Dollar-Variablen und Backticks und ähnliches immer Double Quotes drum herum gesetzt werden müssen. Und zwar an so gut wie allen Stellen, wo sie auftauchen. Beispiel:
Code: (dl
)
echo "$foo" "$bar" "`date`" Aber zu der Frage: Code (perl): (dl
)
1 2 3 4 5 # Alle eckigen Klammern entfernen $string =~ tr/[]/d; # Oder: Matchende Klammern in Paaren entfernen 1 while $string =~ s#\[([^\[\]]*)\]#$1#g; Das zweite Beispiel habe ich dazu geschrieben, weil Dein sed-Befehl so aussieht, als ob Du die Klammern paarweise entfernen möchtest. Wenn man Escaping-Schwierigkeiten befürchtet, sollte man natürlich die Klammern komplett entfernen, auch wenn sie nicht paarweise auftreten. Anmerkung: [1]: Richtige Shell-Programmierung gibt es nicht. Richtig würde man es machen, wenn man nicht in Shell programmiert, weil das als Programmiersprache wirklich fürchterlich ist :) Last edited: 2016-05-24 22:14:36 +0200 (CEST) Lieblingsmodule: IPC::System::Simple, Path::Class
|