[linux-l] regex

Lutz Willek lutz.willek at belug.de
So Jan 8 23:51:22 CET 2012


Hi,

Gegeben sei folgender String:
bla \\section{a} \section{b} foo \\section{c} bar \section{d}

Also wenn ich Dir richtig verstanden habe, aus diesen String willst Du 
im Ergebnis folgendes haben: (????)
bla \\section{a} {b} foo \\section{c} bar {d}

Dann liegt das erste Problem schon mal bei echo.
Du machst folgendes:
  echo "bla \\section{a} \section{b} foo \\section{c} bar \section{d}"
bla \section{a} \section{b} foo \section{c} bar \section{d}

Du meinst aber:
  echo 'bla \\section{a} \section{b} foo \\section{c} bar \section{d}'
bla \\section{a} \section{b} foo \\section{c} bar \section{d}

hier maskiert sich das \\ schon zum \...

Das nächste (eigentlich gleiche Problem) ist nochmal der \, diesmal aber 
im sed: Dieser maskiert ja Sonderbedeutungen von Zeichen. Möchtest Du 
auf den \ filtern musst Du diesen mit \ maskieren, also kommt ein \\ 
raus. Ja ist furchtbar, man gewöhnt sich aber dran.

Der Rest ist dann schon korrekt von Dir gedacht. Nicht regex vermiest es 
Dir, sondern der \...

Eine Lösung wäre dann:
echo 'bla \\section{a} \section{b} foo \\section{c} bar \section{d}' \
	| sed 's/ \\section/ /g'
bla \\section{a} {b} foo \\section{c} bar {d}

Wolltest Du das so haben? Wenn nicht nochmal den String im Original und 
das gewünschte Ergebnis.

Übrigens, ein "\\section{bla}" enthält auch ein "\section", mit sed und 
Deinen Suchkriterien würdest Du ein "\{bla}" erhalten. Wenn Du das 
Ergebnis wolltest müsstest Du noch einmal anders vorgehen.


lg Lutz

Am 08.01.2012 20:39, schrieb Olaf Radicke:
>
> Ich glaube regex wird sich mir nie verschließen. Ich verstehe z.B. nicht
> das Ergebnis:
>
> or at gkiste:~/var$ echo "bla \section{bla}" | sed 's/\\{1}section//g'
> bla \section{bla}
> or at gkiste:~/var$ echo "bla \\section{bla}" | sed 's/\\{1}section//g'
> bla \section{bla}
>
> Ich dachte ich würde mit dem regex sed sagen, ich will alle "\section"
> ausschneiden aber nicht "\\section", in dem ich mit {1} die exakte Anzahl
> vom "\" angebe.
>
> Ich wäre für Nachhilfeuntersicht dankbar.
>
> Gruß&  frohes Neues,
>
> Olaf
> _______________________________________________
> linux-l mailing list
> linux-l at mlists.in-berlin.de
> Die Mailingliste der BeLUG (Berliner Linux User Group)
>
> Wenn du diese Mailingliste  abbestellen willst, gehe bitte auf
> https://mlists.in-berlin.de/mailman/listinfo/linux-l-mlists.in-berlin.de
> und trage dich dort bitte aus




Mehr Informationen über die Mailingliste linux-l