'{' ersetzen mit sed
-
hallo,
an alle sed-spezialisten
wie kann ich den '{' oder '}' character mit sed ersetzen lassen?
sed -e s/\{/foo/
funktioniert leider nicht...
danke
-
Hier funktioniert das ohne Probleme:
~ % echo '{' | sed -e s/\{/foo/ foo
-
komisch... jetzt gehts tatsächlich... sorry, hab wohl irgendwas falsch gemacht
-
aber eine andere frage: gibt es eine möglichkeit (GNU) grep "non-greedy" zu machen? was ich versuche ist, alles was zwischen einem C kommentar /* */ steht, auszugeben... dummerweise funktioniert aber dank der "greedyness" von (GNU?) grep folgendes nicht:
grep -e /\*.*?\*/
(vorausgesetzt der kommentar geht nicht über mehrere zeilen, denn damit scheint grep allgemein probleme zu haben)
beim googlen konnte ich auch keine lösung finden...
geht das überhaupt mit grep oder muss ich mich nach einem anderen tool umsehen?
-
dooley schrieb:
muss ich mich nach einem anderen tool umsehen?
Ich denke schon.
Ich kann mich nicht so genau erinnern (schon lange her als ich Reguläre Sprachen in einer Vorlesung hatte), aber ich glaube, grep wird das nicht matchen (wie ist das Wort auf Deutsch
?) können, weil grep nur Zeichenkette matchen kann, die durch eine reguläre Sprache erzeugt werden.
/* Das Kommentar /* ist hier nicht zu ende */ aber hier */
Du kannst dazu keinen regulären Ausdruck geben, weil du mit regulären Ausdrücken nicht zählen kannst.
-
supertux schrieb:
/* Das Kommentar /* ist hier nicht zu ende */ aber hier */
Du kannst dazu keinen regulären Ausdruck geben, weil du mit regulären Ausdrücken nicht zählen kannst.
Warum solltest Du hier zählen müssen? Beim ersten / ist der Kommentar zu Ende, egal wieviele / nach dem ersten folgen:
/* /* /* /* das hier ist ein kommentar, der gleich wieder aufhoert */
Habe ich Dich missverstanden?
-
dooley schrieb:
aber eine andere frage: gibt es eine möglichkeit (GNU) grep "non-greedy" zu machen? was ich versuche ist, alles was zwischen einem C kommentar /* */ steht, auszugeben...
Grep gibt immer nur ganze Zeilen aus, die dem Suchbegriff entsprechen, nicht nur den gematchten Teil; dafür bräuchtest Du schon sed oä.
-
nman schrieb:
Habe ich Dich missverstanden?
Ja, und ich habe mich auch falsch ausgedruckt. Jetz6t fällt mir auf, das mein Beispiel falsch war.