27. april 2006 - 06:48Der er
8 kommentarer og 1 løsning
Søge/erstatte i stor (3,5 GB) fil
Hej
jeg skal finde følgende sekvens:
"\r\n "
og erstatte med:
" " (altså bare et mellemrum).
De fleste editorer synes filen er for stor, og når der endelig er en der vil åbne filen så laver den search/replace i ram hvilket jeg ikke har nok RAM til ...
Jeg har prøvet med sed, men den vil ikke matche \r\n (den erstatter ingenting)
Jeg har prøvet med awk, men den kan jeg kun få til at matche et enkelt tegn (fx \n)
Jeg har prøvet med de editorer jeg lige kunne finde (notepad, "010 Editor", gedit, kedit, emacs, vi, fsw webcoder), men enten er filen for stor eller også vil de ikke lave multi-line replaces (altså matche \r\n).
Hvad skal jeg bruge? Hvorfor er det så svært (for mig) at finde et værktøj til en opgave der ellers lyder så simpel?
i øvrigt, grunden til at jeg overhovedet skal det er at jeg har en fil der ser sådan her ud:
INSERT INTO tabel1 (gaji,gad,gadw) VALUES ('faf', 'faga', 'aqe');
INSERT INTO tabel2 (gaji,gad,gadw) VALUES ('faf', 'faga', 'aqe');
jeg vil gerne kunne greppe efter de forespørgsler (afgrænset af semikolon) der indeholder tabel2 men ikke dem fra tabel1. Derfor er min "løsning" (hack) at få det til at stå på en linje (ved at udnytte at alle "underlinjerne" starter med en række mellemrum) så jeg kan bruge grep.
OK, nu har jeg dog fået tekstfilen splittet op så de fylder 1,7 GB hver, og det har jeg lige en hex-editor der kan klare. Men hvis den ikke kan alligevel prøver jeg textpad.
Det øverste virker men det nederste gør ikke, sikkert fordi perl arbejder med "line context" (for each line do) ... (dette problem er jeg løbet ind i med stort set alle de værktøjer jeg har forsøgt at bruge)
Min endelige løsning blev at erstatte alle de "gode" linjeskift (dem der kom efter et ;) med teksten GODTLINJESKIFT, og dernæst fjerne alle linjeskift i filen. Til sidst erstattede jeg så GODTLINJESKIFT med \n ...
Total hack, men jeg håber ikke at ordet GODTLINJESKIFT indgår i dumpets tekst...
Tak for svar, læg lige rigtige svar så i kan få point
Nej, det var snarere et dårligt hack end en god løsning. :) Men det virkede.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.