The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for Advanced & Ekspertsøgning Brugere
.
google unix.com



UNIX for Advanced & Ekspertsøgning Brugere Expert-til-ekspert. Lær avancerede UNIX, UNIX-kommandoer, Linux operativsystemer, systemadministration, programmering, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
hvordan man får adgang til værdierne i awk / nawk variabler uden for awk / nawk blok? saniya Shell Programmering og Scripting 5 05-13-2008 08:37 AM
nawk & awk sd12 UNIX for Advanced & Ekspertsøgning Brugere 5 05-05-2008 11:46 AM
nawk / ksh hjælpe DeltaX Shell Programmering og Scripting 0 03-06-2008 03:54 PM
nawk-v til awk kamel.seg Shell Programmering og Scripting 2 12-18-2007 07:30 AM
nawk whatisthis Shell Programmering og Scripting 3 09-29-2004 02:44 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 01-03-2008
ctap ctap is offline
Registreret Bruger
  
 

Join Date: Jul 2005
Stillinger: 3
nawk brug

Jeg fandt en kommando, der udskriver x linjer før og efter en linje, der indeholder en søgte streng i en tekstfil.
Kommandoen:
-------------------
nawk 'c -> 0; $ 0 ~ r (if (b) for (c \u003d b 1 c> 1 c -) udskrive r [(NR-C +1)% b]; udskrive c \u003d a) b (r [NR% b] \u003d $ 0) 'b \u003d 2 a \u003d 4 s \u003d "streng" file1

... hvor "b" og "a" er antallet af linjer for at udskrive før og efter strengen "s".
-------------------

Det virker meget godt, men jeg kan ikke forstå syntaks, alt for svært med "mand nawk". Er der nogen, der vil være i stand til at kommentere denne syntaks?

Mange har i forvejen, venlig hilsen og godt nytår.
  #2 (permalink)  
Old 01-10-2008
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Beliggenhed: Ashburn, Virginia
Indlæg: 9.131
'c -> 0; $ 0 ~ r (if (b) for (c \u003d b 1 c> 1 c -) print r [(NR-c 1)% b]; print c \u003d a ) b (r [NR% b] \u003d $ 0) '
har 3 mønster-aktion udsagn:
1) c -> 0;
2) $ 0 ~ r (if (b) for (c \u003d b 1 c> 1 c -) print r [(NR-c 1)% b]; print c \u003d a)
3) b (r [NR% b] \u003d $ 0)

Den første har ingen eksplicit handling, så den sag er ganske enkelt at udskrive hele record. Men i dette tilfælde semikolon er nødvendig, således at den ikke kører i den anden staement. Den anden erklæring har en eksplicit handling, som er i bøjler og bøjler er nok til at adskille den fra den tredje. Nu overveje disse erklæringer i omvendt rækkefølge ...

3) b (r [NR% b] \u003d $ 0)
Mønstret er b, der er spurgt, om b er lig med nul. Hvis b er ikke-nul vi nødt til at gemme poster i tilfælde har vi brug for dem senere. Men hvis b er nul, kan vi springe over dette, da vi ikke ønsker noget "før" poster vises. Hvis b er, siger, 5, vi vil altid have de sidste 5 poster i r array.

2) $ 0 ~ r (if (b) for (c \u003d b 1 c> 1 c -) print r [(NR-c 1)% b]; print c \u003d a)
Det mønster 0 $ ~ r blot spurgt, om posten matcher søgekriterierne vi gemt i s. Hvis det er tilfældet, og hvis b ikke er nul, udskriver vi disse registre, som vi har gemt i trin 3 ovenfor. Så kan vi udskrive den aktuelle post. Så c \u003d a nedsætter det næste skridt at forklare ...

1) c -> 0;
c bliver sat til en (antal "efter" records), når vi finder en match. The c - del formindskelser c efter vi bruger det. Og vi bruger det til at se, om det er større end nul. Dette er, hvordan den "efter" registreringer er trykt.

Senest redigeret af Perderabo; 01-17-2008 kl 08:34 AM.. Årsag: fix some typos
  #3 (permalink)  
Old 01-17-2008
ctap ctap is offline
Registreret Bruger
  
 

Join Date: Jul 2005
Stillinger: 3
tak Perderabo

Jeg forstår bedre! Og måske "NR% b" betyder "NR modulo b" ...

Jeg vil tage mere tid til at analysere, men Thank's a lot
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 03:17 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0