93578
Goto Top

Alle Zeilen mit Zeichen, die nicht auf einer deutschen Tastatur vorhanden sind, in einer UTF-8 Textdatei löschen?

Hallo liebe Forum-Mitglieder,

ich war lange nicht mehr hier. Ich habe ein folgendes Problem:

ich will alle Zeilen in einer Textdatei, die mindestens 1 Zeichen enthalten, das nicht auf der deutschen Tastatur vorhanden ist, löschen. Und nur Zeilen mit Zeichen lassen, die auf deutscher Tastatur vorhanden sind.

Die Zeichen, die ich brauche : a-zA-Z0-9ßüöäÜÖÄ°!"§$%&/()=?`´\}][{^@~+*#'-_.:,;<>|

Die Zeichen, die ich nicht brauche (Beispiel):

яшеффмГЫЙ
&#33;
ÀÁÂÆÇÍÌØÐåæçą
ﻃﺘﺳﺷﺙ ﹹﴼ﴿﷼ﷺ
¤©®¬±²³¶¹¸ƱDžǯ☻♀♥Ⱳ♫Ᵽ╬╕┘│║√⅞↑↓↔↕↨
熬奥澳坳鏖聱厂广艾

Die Lösung, die ich hier gefunden habe:

sed -re '/[^a-z0-9!§$%&/()=?_:;><,.\#\+\{\}\\\|~\*\`´\ ’@-]/Id' info.txt  

geht nicht so richtig.

Testdatei:

über
benutzer
123Holger
außer
lösen
überall
kei't  
f€werf
123$%&/
>AWSX;:*
™wow™ 
™©2808197Le
™?;?8?(?N†m
1357997531Њ
laslo♀♥Ⱳ♫Ᵽ
&#33; &#33; &#33; 
 熬奥澳-123
ﻃﺘﺳﺷﺙ 

Es sollen nur Zeilen bleiben:

über
benutzer
123Holger
außer
lösen
überall
kei't  
f€werf
123$%&/
>AWSX;:*

Falls ich es versuche, das oben genannten Befehl so zu modifizieren:

sed -re '/[^a-z0-9!§$%&/()=?_:;><,.\#\+\{\}\\\|~\€\ß\*\`´\ ’@-]/Id' info.txt

Bekomme ich:

über
benutzer
123Holger
außen
lösen
überall
f€werf
123$%&/
>AWSX;:*
&#33; &#33; &#33;  

Die Zeile mit dem Wort kei't fehlt aber (der Rest wird korrekt entfernt). Und dort befindet sich auch eine Zeile , die ich eigentlich löschen wollte &#33; &#33; &#33;

Falls ich es versuche, das oben genannten Befehl so zu modifizieren (Apostroph-Zeichen hinzufügen \' ):

sed -re '/[^a-z0-9!§$%&/()=?_:;><,.\#\+\{\}\\\|~\€\ß\'\*\`´\ ’@-]/Id' info.txt

bekomme ich Meldung
>
Was mach ich da falsch?

Und wie kann ich solche Kombinationen wie &#33; &#33; &#33; automatisch löschen?

Grüße,

Philipp

Content-Key: 312623

Url: https://administrator.de/contentid/312623

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: 93578
93578 14.08.2016 um 14:24:43 Uhr
Goto Top
So... Erstes Teil des Problems habe ich gelöst:

sed -re "/[^a-z0-9\!\§\$\%\&/()=?_:;><,.\#\+\{\}\\\|~\€\ß\'\*\`´\ ’@-]/Id" info.txt  

So habe ich nun auch das Wort kei't.

Aber wie kann ich Zeilen a-la &#33; &#33; &#33; löschen?
Mitglied: 129813
129813 14.08.2016, aktualisiert am 15.08.2016 um 12:29:01 Uhr
Goto Top
Zitat von @93578:
Aber wie kann ich Zeilen a-la &#33; &#33; &#33; löschen?
Also add it to the regex as an additional OR (|) expression
sed -re "/[^a-z0-9äöü€\!\§\$\%\&/()=?_:;><,.\#\+\{\}\\\|~\€\ß\'\*\`´\ ’@-]|&#[0-9]+/Id" info.txt  

results in

über
benutzer
123Holger
außer
lösen
überall
kei't  
f€werf
123$%&/
>AWSX;:*

-- small correction
Mitglied: 93578
93578 16.08.2016 aktualisiert um 09:08:01 Uhr
Goto Top
Hi highload,

ich habe mich zu früh gefreut.... Ich habe diesen Script über Nacht laufen lassen ... Die ursprungliche Größe einer Datei: 35.956.467 MB. Heute Morgen war ihre Größe 34.989.125 MB. Ich war begesitert... Aber bei genauem Anschauen der Datei fand ich weitere Zeichen, die ich dort nicht haben wollte:

123456ÌàðóñÿÊëèìîâà
12ïîäâèãîâãåðàêëà
82ëåíà45êîâàëåíêî69
927àíòèêâàðíûé3259390
13ìàìàïðîñòèìåíÿ13
1408982465ïàñïîðòÑîïà
44ïàðîëüêàêïàðîëü
1511951350ÿÿÿÿÿÿÿÿÿÿÿ
25ìîåäåíüðîæäåíèÿ
45áàáàÿãîäêàîïÿòü
657953650074ôûðèêøòïóê
666ìèðâîâñåììèðå666
8606êàòðèí0833óðàãàí
2701Èðà0602Ñàøà1611Àíÿ
1989çàõàðîâäìèòðèé
09102010êàðèíàèàðòåì
200894113265899����������4637938
20ïîáåäèòåëüíèöà09

Wie kann man so was beseitigen? Es tut mir leid, dass ich es nicht gleich in meinem Beispiel bei der Fragestellung erwähnt habe... Sie stehen aber in der Zeile 3 in der Frage selbst... Ich dachte, dass solche Zeilen automatisch gelöscht werden, weil Script soll ja nur die Zeichen lassen, die dort vorhanden sind?