Forum: PC Hard- und Software Mehrere Zeichen in Textdatei ersetzen


von Joachim B. (Gast)


Lesenswert?

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

von Norbert (Gast)


Lesenswert?

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.

von Arno (Gast)


Lesenswert?

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

von Klaus W. (mfgkw)


Lesenswert?

Ist * ein gutes Zeichen für Dateinamen?

Ansonsten:
sed ... y/.../.../...

: Bearbeitet durch User
von Nano (Gast)


Lesenswert?

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

von Rolf M. (rmagnus)


Lesenswert?

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.

von WIRO (Gast)


Lesenswert?

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

von udok (Gast)


Lesenswert?

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.

von udok (Gast)


Lesenswert?

udok schrieb:
> Funktioniert hier nicht... sed kommt anscheinend nicht mit ۤ klar.

MIt "export LANG=C.UTF-8" gehts, System ist Msys64.

von Johgi (Gast)


Lesenswert?

cat datei | tr '§|$|&|€' '*' > datei_neu

von udok (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.