Hi Angenommen in einer Datei möchte ich die Zeichen §$&€ jeweils durch * ersetzen. Kann man dies über regex in einem SChritt machen? Ich versuch mich grad mit UltraEdit
1 | Angenommen in einer Datei möchte ich die Zeichen §$&€ jeweils durch * ersetzen. |
1 | $ sed 's/[\§\$\&\€]/*/g' 'Eingabe-Datei' |
2 | Angenommen in einer Datei möchte ich die Zeichen **** jeweils durch * ersetzen. |
Regex ist ja erstmal für die Suche, nicht für die Ersetzung... Aber ja, die meisten Regex-Dialekte kennen matches auf "eines der Zeichen aus der Auswahl", meist mit eckigen Klammern: https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck#Ein_Zeichen_aus_einer_Auswahl und https://www.ultraedit.com/wiki/Regular_expressions MfG, Arno
Ist * ein gutes Zeichen für Dateinamen? Ansonsten: sed ... y/.../.../...
:
Bearbeitet durch User
Joachim B. schrieb: > Angenommen in einer Datei möchte ich die Zeichen §$&€ jeweils durch * > ersetzen. Du brauchst halt das für das * Zeichen passende Maskierungszeichen. Keine Ahnung welche das bei Ultraedit ist, der Klassiker dürfte aber \* sein. ** kannst du auch mal probieren. https://de.wikipedia.org/wiki/Escape-Sequenz#Maskierungszeichen_zum_Verhindern_einer_Escape-Sequenz
Nano schrieb: > Du brauchst halt das für das * Zeichen passende Maskierungszeichen. Das braucht man normalerweise nur für den Match-String, nicht für den Ersetzungsstring.
Eine Batchdatei mit diesem Inhalt tut es:
1 | setlocal enabledelayedexpansion |
2 | copy nul nach.txt |
3 | for /f "tokens=*" %%i in (von.txt) do ( |
4 | set s=%%i |
5 | set s=!s:§=*! |
6 | set s=!s:$=*! |
7 | set s=!s:^&=*! |
8 | set s=!s:€=*! |
9 | echo !s!>>nach.txt |
10 | )
|
11 | endlocal
|
Die Dateinamen 'von.txt' und 'nach.txt' können b. B. für universelle Verwendung durch Parameter %1 und %2 ersetzt werden. Das Zeichen '&' muss geflüchtet werden '^&'. Gruß WIRO
Norbert schrieb: > $ sed 's/[\§\$\&\€]/*/g' 'Eingabe-Datei' > Angenommen in einer Datei möchte ich die Zeichen **** jeweils durch * > ersetzen. Funktioniert hier nicht... sed kommt anscheinend nicht mit €§ klar.
udok schrieb: > Funktioniert hier nicht... sed kommt anscheinend nicht mit €§ klar. MIt "export LANG=C.UTF-8" gehts, System ist Msys64.
Johgi schrieb: > cat datei | tr '§|$|&|€' '*' > datei_neu Das funktioniert nicht, da es auch | in * umwandelt. Lass | einfach weg, dann gehts. tr hat eigene Regeln, die nicht kompatibel mit sed sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.