Regular Expressions nur in einer bestimmten Zeile?

3 Antworten

Ein regulärer Ausduck passt oder passt nicht. Das ist völlig unabhängig vom Wetter oder der Zeilennummer, in der der Text steht.

Wenn Du nur bestimmte Vorkommen ersetzen willst, musst Du das dem Ersetzungsbefehl mitteilen. Bei sed schreibst Du einfach die Zeilennummer vor den Befehl:

sed -i '5s/==HalloTest==/== Zeile 5 ==/' tests/*.wiki

Ansonsten kannst Du bestenfalls versuchen, das Pattern so einzuschränken, dass es nur noch in Zeile 5 passt. Gibt es irgend etwas, was nur in Zeile 5 (nicht) vorkommt?

Ich würde für alle Dateien ex in einem Skript aufrufen und dann eben nur für 5,5 ändern.

Indem Du es nur auf Zeile 5 anwendest.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Chekka 
Fragesteller
 16.07.2022, 11:45

Aber wie genau? Bei mehreren tausend Dateien möchte ich nicht jede einzeln öffnen.

Eigentlich geht es auch nur um das herkömmliche Programmieren, sondern in MediaWiki, wo jedoch die gleichen ReGex-Ausdrücke verwendet werden können, wie in Notepad u.ä. auch.

0
Palladin007  16.07.2022, 22:59
@Chekka

Ich bin davon ausgegangen, Du programmierst.

Wenn in Zeile 5 etwas steht, das auch wirklich nur dort steht, dann kannst Du das mit in das Regex Pattern einbauen, sodass es nur auf Zeile 5 matcht.

Gibt's das nicht, kommst Du nicht ums Programmieren herum. Erkundige dich, wie man mit PowerShell eine bestimmte Zeile liest und schreibt. PowerShell kann ziemlich viel, auch Regex, ein bisschen Einarbeitung wirst Du aber brauchen.

0