FatManStanding
Lt. Junior Grade
- Registriert
- Aug. 2021
- Beiträge
- 490
Hallo,
ich will Zeichen zwischen <sub>- oder <sup>-Tags durch andere Zeichen ersetzen. Es kommt vor, dass in den Tags noch weitere Zeichen stehen. Das sieht dann so aus:
In dem Fall soll eine 2 innerhalb eines <sub>-Tags durch 'AAA' ersetzt werden (das ist sinnlos, es geht nur um das Prinzip). Das geht allers grds., es wird aber immer nur das erste gefundene Muster pro Zeile ersetzt. Führe ich das ganze ein zweites mal für die geänderte Datei aus, wird das zweite gefundene Muster ersetzt, weil es ja in dem zweiten Durchlauf das erste pro Zeile ist. Wieso wird immer nur das erste ersetzt? Wenn ich einfach irgendein Zeichen ersetzte und kein Regex verwende wird alles ersetzt.
FMS
Edit
Wenn der Text z. B. so aussieht
findet sed nicht nur "<sub>23 </sub>" sondern "<sub>23 </sub> bez <sub>23 </sub>". Ich kenne gierige und nicht gierige Suchen nur i.V.m. Regex, also ".?" statt ".".
ich will Zeichen zwischen <sub>- oder <sup>-Tags durch andere Zeichen ersetzen. Es kommt vor, dass in den Tags noch weitere Zeichen stehen. Das sieht dann so aus:
Code:
sed -i 's/<sub>2\(.*\)<\/sub>/<sub>AAA\1<\/sub>/g' neu.txt
In dem Fall soll eine 2 innerhalb eines <sub>-Tags durch 'AAA' ersetzt werden (das ist sinnlos, es geht nur um das Prinzip). Das geht allers grds., es wird aber immer nur das erste gefundene Muster pro Zeile ersetzt. Führe ich das ganze ein zweites mal für die geänderte Datei aus, wird das zweite gefundene Muster ersetzt, weil es ja in dem zweiten Durchlauf das erste pro Zeile ist. Wieso wird immer nur das erste ersetzt? Wenn ich einfach irgendein Zeichen ersetzte und kein Regex verwende wird alles ersetzt.
FMS
Edit
Wenn der Text z. B. so aussieht
<sub>23 </sub> bez <sub>23 </sub> bez
<sub>23 </sub> bez <sub>23 </sub> bez
findet sed nicht nur "<sub>23 </sub>" sondern "<sub>23 </sub> bez <sub>23 </sub>". Ich kenne gierige und nicht gierige Suchen nur i.V.m. Regex, also ".?" statt ".".