/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
grep efter lange linier?
Fra : Ukendt


Dato : 05-02-06 14:11

Jeg har en tekstfil, hvor jeg gerne ville have fat i alle linier på
over 100000 tegn.

Jeg prøvede med: grep '.\{100000\}'

Men det er simpelthen for langsomt. Jeg prøvede mig lidt frem med
mindre tal og konstaterede, at det går lidt hurtigere hvis man
sætter et ^ tegn i starten af det regulære udtryk. Men det går
stadigvæk for langsomt. grep '^.\{1000\}' tager ca. et sekund om
den 12MB fil jeg har fat I. Sætter jeg tallet op til 2000 tager
det 29 sekunder.

Er der en smartere måde at få fat i de længste linier fra en fil?

--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);

 
 
Peter Makholm (05-02-2006)
Kommentar
Fra : Peter Makholm


Dato : 05-02-06 14:19

Kasper Dupont <71640877953371799101@expires.19.mar.2006.kasperd.net.invalid> writes:

> Jeg har en tekstfil, hvor jeg gerne ville have fat i alle linier på
> over 100000 tegn.

Jeg har ikke lige noget godt datasæt, så du må selv lige benchmarke:

perl -ne 'print if length > 100000'

awk '{ if (length > 100000) { print }}'

--
Peter Makholm | One thing you do is prevent good software from
peter@makholm.net | being written. Who can afford to do professional
http://hacking.dk | work for nothing?
| -- Bill Gates

Ukendt (05-02-2006)
Kommentar
Fra : Ukendt


Dato : 05-02-06 14:39

Peter Makholm wrote:
>
> Jeg har ikke lige noget godt datasæt, så du må selv lige benchmarke:
>
> perl -ne 'print if length > 100000'
>
> awk '{ if (length > 100000) { print }}'

På min computer er perl kommandoen ca. fire gange hurtigere
end awk kommandoen. Begge er hurtige nok til mit behov.

--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);

Ukendt (05-02-2006)
Kommentar
Fra : Ukendt


Dato : 05-02-06 14:21

Kasper Dupont wrote:
>
> Er der en smartere måde at få fat i de længste linier fra en fil?

Jeg fandt ud af, at awk kan gøre det med en acceptabel hastighed:

awk 'length($0)>100000 {print}'

--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408803
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste