Supportnet Computer
Planet of Tech

Supportnet / Forum / Linux

bash programmierung





Frage

Ich habe in einem bash-script eine Variable mit mehreren Argumenten die durch ein blank getrennt sind. Wie kann ich aus dieser Variable alle Argumente, die "abc*.xyz" lauten entfernen. Mit sed hab ichs schon probiert, der versteht allerdings keine "*". awk war auch nicht sehr hilfreich. Danke schonmal! Grüße, feily

Antwort 1 von Huutsch

der sed hat ein paar Sonderzeichen, die er für die Steuerung nutzt, willst Du diese Zeichen suchen, dann mußt Du sie mit einem "\" maskieren mit \* also den "*" oder mit \. den ".".
Natürlich ist damit das "\" selber ein Sonderzeichen und muß auch maskiert werden, wenn Du danach suchst mit \\.

Damit solltest Du das eigentlich hinbekommen.

Antwort 2 von feily

Mit einem "\" davor funktionierts nicht. Hatte ich auch schon probiert. Wie ich jetzt erfahren habe muss man zwei "\" davor machen. "\\*" liefert also dann das was ich suche.
Trotzdem danke!

Antwort 3 von Adik

Genau das hat er dir doch gesagt! Da ein \ immer das nächste Zeichen "entwertet" musst du dann halt \\ schreiben...

Antwort 4 von feily

Ne ne! Was ich suche ist die Zeichenkombination die das macht was normal in der bash das "*" macht und das ist weder "*" noch "\*" und auch nicht "\\*". Ein Beispiel:
[feily@server1 misc]$ echo "aaa bbb ccc abc-def.xyz abc-hijk.xyz"|sed
's/abc-*.xyz//g'
aaa bbb ccc

Antwort 5 von Huutsch

. (Punkt) = beliebiges Zeichen
* = Wiederholung
Wenn Du also abc-*.xyz (Bash) erreichen willst, dann mußt Du
s/abc-.*\.xyz//g
benutzen.


Alle Klarheiten beseitigt?