|
| 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);
| |
|
|