Regular Expression/Suchen & Ersetzen: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „== Suchen & Ersetzen == Beim reinen s-Befehl werden immer alle Zeilen ausgegeben, unabhängig davon, ob Ersetzungen durchgeführt wurden oder nicht. Dies lässt sich ändern, indem man ihn mit dem p-Befehl kombiniert. Die Abläufe sind wie folgt: '''p-Befehl''' '''echo "dies wird nicht ausgegeben" | sed -n '/.*diiss.*/p'''' # gibt es eine Ergebnismenge, die zur RE "passt"? # wenn ja, gibt die ganze Zeile aus. '''s-Befehl ohne p-Befehl''' '''echo "dies…“
 
K Textersetzung - „Kategorie:RegEx“ durch „Kategorie:Regular Expression“
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 101: Zeile 101:
|-
|-
|}
|}
[[Kategorie:Regular Expression]]

Aktuelle Version vom 15. Oktober 2024, 11:59 Uhr

Suchen & Ersetzen

Beim reinen s-Befehl werden immer alle Zeilen ausgegeben, unabhängig davon, ob Ersetzungen durchgeführt wurden oder nicht. Dies lässt sich ändern, indem man ihn mit dem p-Befehl kombiniert. Die Abläufe sind wie folgt:

p-Befehl

echo "dies wird nicht ausgegeben" | sed -n '/.*diiss.*/p'

  1. gibt es eine Ergebnismenge, die zur RE "passt"?
  2. wenn ja, gibt die ganze Zeile aus.

s-Befehl ohne p-Befehl

echo "dies wird ausgegeben" | sed 's/wird/wird immer/'

  1. gibt es eine Ergebnismenge, die zur RE "passt"?
  2. wenn ja, welches ist die effektive Ergebnismenge?
  3. ersetze diese durch den Replace-String
  4. gib die ganze Zeile aus (egal, ob geändert oder nicht)

s-Befehl mit p-Befehl

echo -e "xxx\nnächste Zeile" | sed -n 's/xxx/Ausgabe/p'

  1. Die Kombination von s- und p-Befehl bewirkt, dass
  2. nur die geänderten Zeilen ausgegeben werden.
  3. Die Option -n darf nicht vergessen werden.

Im Allgemeinen ist es sinnvoll, den g-Spezifizierer ("global") zu verwenden, der direkt vor oder hinter dem p-Befehl steht:

echo -e "xxx--xxx\nnächste Zeile" | sed -n 's/xxx/Ausgabe/pg'

  1. alle "xxx" werden ersetzt

Ersatzmuster

Bei einigen Tools (ex, sed und ed) werden zwei Muster angegeben: Ein Suchmuster (links) und ein Ersatzmuster (rechts). Nur die folgenden Zeichen sind in einem Ersatzmuster gültig:

ex sed Ed
\ X X X Sonderbedeutung des nächsten Zeichens aufhebe
\n X X X Verwendet das in \( \) gespeicherte Muster erneut
& X X Verwendet das vorherige Suchmuster erneut
~ X Verwendet das vorherige Ersatzmuster erneut
\u X Ändert das erste Zeichen des Ersatzmusters auf Großschreibung
\U X Ändert alle Zeichen des Ersatzmusters auf Großschreibung
\l X Ändert das erste Zeichen des Ersatzmusters auf Kleinschreibung
\L X Ändert alle Zeichen des Ersatzmusters auf Kleinschreibung
\E X Hebt das vorangegangene \U oder \L auf
\e X Hebt das vorangegangene \u oder \l auf