← Back to team overview

sslug-teknik team mailing list archive

Re: udskrive udsnit af tekstfil.

 

du kan helt sikkert også bruge grep til at finde linie nummer, og head og
tail til at lave udsnittet.



ion++


On Thu, 3 Aug 2000, Anders Lund wrote:

> On Wed, 02 Aug 2000, you wrote:
> > Jeg har en temmelig lang tekstfil, som jeg ønsker at kunne
> > søge i.
> >
> > Data i filen står i blokke, som er adskilt af blanke linier.
> > Alle linier undtagen den første i hver blok er indrykket med blanktegn.
> > De fleste blokke indeholder kun et par linier tekst, og normalt
> > søger jeg efter tekst, som står i starten af en blok, så
> > hidtil har jeg klaret mig med grep -A 10 "^tekst" datafil.txt
> >
> > For at afgrænse til at udskrive en blok har jeg prøvet følgende:
> > grep -A 100 "^tekst" datafil.txt | grep -v -A 100 "^[[:space:]]*$"
> >
> > Er det virkelig ikke muligt at få grep til at skrive alle
> > linier imellem to matches? Eller er det bare mig, som ikke
> > har set lyset?
> >
> 
> Perl, selvfølgelig!
> Her er et hint:
> 
> open <FILE>, $file or die "kunne ikke åbne $file: $!\n";
> # sæt record seperator til blank linie,
> # virker kun hvis der ikke er blanke tegn ([\s\t\0] på blanke linier.
> $/ = \n\n;
> # find en post der starter med $text
> @found = grep { /^$tekst/} <FILE>;
> close FILE;
> # udskriv til STDOUT
> print shift $found;
> 
> -anders
> 



References