← Back to team overview

sslug-teknik team mailing list archive

Re: grep: memory exhausted

 

On Fri, 10 Dec 2004 15:01:37 +0100
Lars wrote:

> Jeg har et lille problem. Jeg skal hente nogle tekst-data fra en hardisk 
> (ext3). Så jeg skriver følgende fra systemrescuecd på en mountet share :
> 
> grep -a -B2 -A4 "søgetekst" /dev/hda1 > gem_output
> 
> Jeg har ligeledes prøvet :
> 
> dd if=/dev/sda3 bs=1048576 count=500 | grep -a -B2 -A4 "søgetekst" 
> /dev/hda1 > gem_output
> 
> Efter et stykke tid får jeg så "grep: memory exhausted" på begge 
> kommandoer. Det er jo temmelig klart hvad der sker her. Jeg har 190 MB 
> til rådighed. Er der monstro nogle bud på hvordan jeg undgår at løbe tør 
> for hukommelse ?

Har det ikke snarere noget at gøre med, at grep forventer linier. D.v.s. 
at -a optionen bevirker, at den faktisk står og fylder en liniebuffer,
først for at have styr på linier før (p.g.a. -B2 optionen) og derefter
endda flere linier (til -A 4.)

Jeg har da tit tænkt på, hvordan jeg ville gøre sådan noget, og er
endt med ikke at bruge grep - indtil jeg får genskrevet min gamle
tekst-manipulator som er ligeglad med linieskift.

Enten bruger jeg 

# cat /dev/hda1 | strings | grep interessant_text

# echo "eller hvis det ikke er nok "

# cat /dev/hda1 | hexdump -C | grep "lidt_text"

# echo "idet problemet med den sidste er, at man ikke kan være
  sikker på om éns tekst er delt op i småbidder p.g.a.a.
  hexdump skifter linie for hver 16 bytes."

exit

Men andet kan jeg ikke komme i tanke om lige nu (jeg bruger det
som regel kun på floppy-størrelse partitioner, det er derfor jeg
er forsigtig med at udråbe det til en generel metode. Jeg har
vist en gang dumpet en 100MB partition med Hexdump -C til en
fil og så kigget på den. Hexdump skipper linier med 00'er)



-- 
donald_j_axel donax snabela get2net.dk -- http://d-axel.dk/


Follow ups

References