The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > UNIX e avanzata per utenti esperti
.
google unix.com



UNIX e avanzata per utenti esperti Expert-to-Expert. Ulteriori avanzata UNIX, comandi UNIX, Linux, Sistemi Operativi, System Administration, Programmazione, Shell, Shell Script, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
modalità di accesso ai valori di awk / nawk variabili al di fuori del awk / nawk blocco? saniya Shell scripting e di programmazione 5 05-13-2008 07:37 AM
nawk & awk sd12 UNIX e avanzata per utenti esperti 5 05-05-2008 10:46 AM
nawk / ksh aiutare DeltaX Shell scripting e di programmazione 0 03-06-2008 03:54 PM
nawk ad awk-v kamel.seg Shell scripting e di programmazione 2 12-18-2007 07:30 AM
nawk whatisthis Shell scripting e di programmazione 3 09-29-2004 01: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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 01-03-2008
ctap ctap is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2005
Interventi: 3
nawk uso

Ho trovato un comando che stampe linee x prima e dopo una riga che contiene una stringa di ricerca in un file di testo.
Il comando è:
-------------------
nawk 'c -> 0; $ 0 ~ s (if (b) per (c \u003d 1 b, c> 1, c -) stampa r [(NR-c +1)% b]; stampa; c \u003d a) (b r [% NR b] \u003d $ 0) 'b \u003d 2 a \u003d 4 s \u003d "stringa" file1

... dove "b" e "uno" sono il numero di linee per la stampa prima e dopo la stringa "s".
-------------------

Funziona molto bene, ma non riesco a capire la sintassi, troppo difficile, con "l'uomo nawk". È che alcuni uno che sarà in grado di commentare questa sintassi?

Grazie in anticipo, saluti e felice anno nuovo.
  #2 (permalink)  
Old 01-10-2008
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix Daemon
  
 

Join Date: Aug 2001
Ubicazione: Ashburn, Virginia
Messaggi: 9.119
'c -> 0; $ 0 ~ s (if (b) per (c \u003d 1 b, c> 1, c -) stampa r [(NR-c +1)% b]; stampa; c \u003d a b) (r [% NR b] \u003d $ 0) '
modello è dotato di 3-azione dichiarazioni:
1, lettera c) -> 0;
2) $ 0 ~ s (if (b) per (c \u003d 1 b, c> 1, c -) stampa r [(NR-c +1)% b]; stampa; c \u003d a)
3, lettera b) (r [% NR b] \u003d $ 0)

Il primo non ha alcuna azione in modo esplicito il ricorso è semplicemente stampare l'intero record. Ma in questo caso il punto e virgola è necessaria in modo che esso non viene eseguito per la seconda staement. La seconda dichiarazione è un'esplicita azione che è in parentesi e le parentesi graffe sono sufficienti per separarla dal terzo. Consideriamo ora queste dichiarazioni in ordine inverso ...

3, lettera b) (r [% NR b] \u003d $ 0)
Il modello è b, che si chiede se b è pari a zero. Se b è non-zero abbiamo bisogno per salvare i record nel caso in cui ne abbiamo bisogno più tardi. Ma se b è pari a zero, si può saltare questo, poiché non vogliamo che ogni "prima" record visualizzato. Se b è, diciamo, 5, si avrà sempre l'ultimo record del 5 r array.

2) $ 0 ~ s (if (b) per (c \u003d 1 b, c> 1, c -) stampa r [(NR-c +1)% b]; stampa; c \u003d a)
Il modello $ 0 ~ s semplicemente chiede se il record che corrisponde ai criteri di ricerca abbiamo immagazzinato in s. Se è così, e se b non è zero, stampa abbiamo le registrazioni che abbiamo salvato nel passaggio 3 sopra. Poi stampa il record corrente. Poi c \u003d imposta il passo successivo per essere spiegato ...

1, lettera c) -> 0;
c viene fissato a un (numero di "dopo" record) quando si trova una corrispondenza. C - c parte decrementi dopo le usiamo. E l'abbiamo usato per vedere se è maggiore di zero. Questo è come il "dopo" i record vengono stampati.

Ultimo a cura di Perderabo; al 01/17/2008 08:34 AM.. Motivo: correzione alcuni errori di battitura
  #3 (permalink)  
Old 01-17-2008
ctap ctap is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2005
Interventi: 3
la ringrazio Perderabo

Ho capito meglio! E forse "NR% b" significa "NR modulo b" ...

I avrà più tempo per analizzare, ma grazie a una partita
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 06:30 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0