Hallo,
wie kann man in der bash eigentlich
günstig strings manipulieren?
Hintergrund: ich möchte den $PATH
‚on the fly‘ verändern, d.h, einen
Teilpfad rausfeuern und einen anderen
dafür reinnehmen.
In bash hab ich das nicht hinbekommen,
daher habe ich eine ‚umständliche‘
Perl-Lösung zunächst verwendet.
Beispiel: den Pfad zu Java 1.4 rausnehmen
und durch lokal durch den Pfad zu Java 1.5
ersetzen:
**newjava** =/usr/java/jdk1.5.0\_06
path=`perl -e 'print join ":", grep {!/ **java** /} split(/:/, $ENV{PATH});'`
export PATH=$path:blush:{ **newjava** }/bin
geht das schöner?
Grüße und Danke
CMБ
(perl)
geht das schöner?
Es gibt da immer noch sed, so dass du zB sowas machen könntest:
declare -x PATH=`echo $PATH | sed (lustigerAusdruckMit_s/_Hier)`
Die Möglichkeiten der Shell selber sind doch sehr eingeschränkt.
Hi Nicos,
naja ganz so bloed ist die Shell (zumindest die bash) auch nicht. Immerhin gibt es die einfachen Konstrukte:
var=${variable/search/replace}
um einen String innerhalb von $variable bzw.
var=${variable//search/replace}
um alle Vorkommen des Strings zu ersetzen.
In dem Fall wäre es natürlich etwas fies, den neuen Teilpfad direkt einzusetzen, weil man dann geschickt quoten muss. Besser mit Variablen:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:.
bbr@james ~
$ old="/bin"
bbr@james ~
$ new="/irgendetwas\_anderes"
bbr@james ~
$ echo ${PATH/:blush:old:/:blush:new:}
/usr/local/bin:/usr/bin: **/irgendetwas\_anderes** :/usr/X11R6/bin:.
Das hat doch gar nicht weh getan, oder… (weitere Möglichkeiten zu finden in der Suchmaschine deiner Wahl unter ‚bash string manipulation‘)
gruss
bernhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
1 „Gefällt mir“
Hallo,
Hi,
wie kann man in der bash eigentlich
günstig strings manipulieren?
sed, awk, cut, grep… oder mit der zsh (Geruechten zufolge).
Hintergrund: ich möchte den $PATH
‚on the fly‘ verändern, d.h, einen
Teilpfad rausfeuern und einen anderen
dafür reinnehmen.
In bash hab ich das nicht hinbekommen,
daher habe ich eine ‚umständliche‘
Perl-Lösung zunächst verwendet.
geht das schöner?
Das ist jetzt rhetorisch, oder? Es geht immer schoener als Perl. Anyway… sieh Dir mal Modules an: http://modules.sourceforge.net/
HTH,
Gruss vom Frank.