Thread Eckige Klammern aus Verzeichnisnamen entfernen (6 answers)
Opened by Sapperlot at 2016-05-24 19:13

betterworld
 2016-05-24 21:56
#184821 #184821
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
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)

View full thread Eckige Klammern aus Verzeichnisnamen entfernen