[linux] Re: 8-bits 'ascii' greppen...
Wybo Dekker
wybo op servalys.nl
Za Jun 28 17:49:58 CEST 2008
Kees Theunissen wrote:
> Als ik aan het resultaat van jouw grep een paar regels toe voeg met
> alleen maar ascii tekens, maar sommige regels met een <TAB>, dan worden
> de regels met een <TAB> gewoon weegegeven door jouw grep. Zoals verwacht
> mag worden. Onderstaande expressie doet het wel goed.
>
> LC_COLLATE=C grep '[^ -~[:cntrl:]]' test
Ja, klopt. Hangt er ook vanaf wat wat wel of niet zien wilt. Ik heb in
de teksten die ik wil afzoeken geen tabs maar soms wel NULL-karakters
die ik vangen wil. Die mis je dan.
Een alternatief is dan
grep "[^^A-~]" test
(waarin ^A voor control-A staat), dan vang je alles behalve karakters
1-126 oftewel je vangt 0 en 127-255. En zo zijn meer combinaties te
bedenken natuurlijk.
Wat ik eigenlijk liever zou willen is dat je gewoon hexadecimale ranges
zou kunnen opgeven, dus bijvoorbeeld:
grep "[^0x00-0x7e]" test
maar dat krijg ik niet voor elkaar.
> Met die "LC_COLLATE=C" definieer je de sorteervolgorde.
> Dan weet je ook zeker dat de reeks "spatie tot en met tilde" de tekens
> bevat die je bedoelt, ongeacht de LOCALE die in gebruik is.
ja, dat is veel netter natuurlijk. En het is ook verstandig om grep de
-a optie mee te geven: als er voorin ergens bijvoorbeeld een control-A
voorkomt zegt-ie anders: binary file matches.
--
Wybo
More information about the Linux
mailing list