Re: non ascii suchen
"Roland M. Kruggel" <rk-liste@gmx.de> writes:
>> > Was ich brauche ist nur die Zeilennummer der entschrechenden
>> > datei.
>>
>> Ich sollte vorher alles lesen. Das wäre dann:
>>
>> grep -nq "$regex" filename
>
> Hallo Heike,
>
> du hast mich genau falschherrum verstanden. das ^I und ^H habe ich
> durch zufall gefunden. Das in der textdate zu suchen ist kein
> problem. Aber vieleicht ist ja auch noch ein ^G drinn, oder ein
> 0x207 oder sonst irgend etwas, was nicht zum Text gehört. diese
> Zeichen will ich finden. Ich kenne sie aber nicht. Das einzige was
> ich kenne ist das was ich NICHT finden will, nämlich die
> ascii-zeichen.
ASCII geht von 0 bis 127, schließt also ^G ein. Was du meinst, sind
offensichtlich druckbare Zeichen und einige nicht-druckende, gängige
Kontrollzeichein.
Dafür gibt es eine sehr praktische Einrichtung: Character Classes.
GNU egrep beherrscht die. Portabilität scheint ja kein Problem zu
sein, und sed ist nicht Bedingung, also kannst du die ruhig nehmen.
Mach' mal
info egrep
/character classes
Der große Vorteil ist, dass die Dinger die locale-Einstellungen
kennen. Bei:
egrep -nq '[^[:print:] ]' file
werden also alle Zeilen, die Zeichen außer den druckbaren und Space
enthalten, erkannt. Das "druckbar" schließt Umlaute ein. Passender
wäre vielleicht noch
egrep -nq '[^[:print:][:space:]]' file
oder, wenn dir das zu viele Kontrollzeichen erlaubt, gibst du die
erlaubten getrennt an:
regex=$'\x08'$'\x09'
egrep -nq "[^[:print:]$regex]" file
Du musst lediglich darauf achten, dass du dieselben locales verwendest
wie dein File.
Gruß,
Heike
Reply to: