Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati
3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loop
Sintassi:
awk options 'selection _criteria {action }' input-file>file-di-output> Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt> Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt> Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in , , e . Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print ,}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio precedente, e rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—, , e così via ( Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici. Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate. Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan. COSA POSSIAMO FARE CON AWK? 1. Operazioni AWK: 2. Utile per: 3. Costrutti di programmazione: Sintassi: Opzioni: Comandi di esempio Esempio: Considera il seguente file di testo come file di input per tutti i casi seguenti: 1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato. Produzione: Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori. 2. Stampa le linee che corrispondono al modello dato. Produzione: Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'. 3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea. Produzione: Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio. Variabili integrate in Awk Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi. Esempi: Utilizzo delle variabili integrate NR (numero di riga di visualizzazione) Produzione: Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga. Utilizzo delle variabili integrate NF (Visualizza ultimo campo) Produzione: Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo. Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6) Produzione: Altri esempi Per il file di testo specificato: 1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt: 2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt: La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt: 3) Per stampare l'eventuale riga non vuota se presente qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga: risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt O awk 'NF <= 0 {print NR}' geeksforgeeks.txt 4) Per trovare la lunghezza della riga più lunga presente nel file: 5) Per contare le righe in un file: 6) Stampa di righe con più di 10 caratteri: 7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica: 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
(a) Trasformare i file di dati
(b) Produrre report formattati
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loopawk options 'selection _criteria {action }' input-file>file-di-output> -f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
$ awk '{print}' employee.txt> ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
$ awk '/manager/ {print}' employee.txt> ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
$ awk '{print $1,$4}' employee.txt> ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
$ awk '{print NR,$0}' employee.txt> 1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
$ awk '{print $1,$NF}' employee.txt> ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
$ awk 'NF <0' geeksforgeeks.txt>
0>
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt> 13>
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> $ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
- NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati
3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loop
Sintassi:
awk options 'selection _criteria {action }' input-file>file-di-output> Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt> Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt> Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print $1,$4}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi.
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,$0}' employee.txt> Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print $1,$NF}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>
qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt> 13>
5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Stampa di righe con più di 10 caratteri:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
}' employee.txt> Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print ,$NF}' employee.txt> Produzione:
esempio Java Lambda
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio sopra rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati
3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loop
Sintassi:
awk options 'selection _criteria {action }' input-file>file-di-output> Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt> Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt> Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print $1,$4}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi.
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,$0}' employee.txt> Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print $1,$NF}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>
qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt> 13>
5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Stampa di righe con più di 10 caratteri:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
}' employee.txt> Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print }' geeksforgeeks.txt> B A12 B6 M42>
3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>
qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length(Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati
3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loop
Sintassi:
awk options 'selection _criteria {action }' input-file>file-di-output> Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt> Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt> Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print $1,$4}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi.
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,$0}' employee.txt> Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print $1,$NF}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>
qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt> 13>
5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Stampa di righe con più di 10 caratteri:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
)>massimo) massimo = lunghezza(Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati
3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loop
Sintassi:
awk options 'selection _criteria {action }' input-file>file-di-output> Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt> Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt> Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print $1,$4}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi.
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,$0}' employee.txt> Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print $1,$NF}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>
qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt> 13>
5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Stampa di righe con più di 10 caratteri:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
) } FINE { print massimo }' geeksforgeeks.txt> 13>
5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Stampa di righe con più di 10 caratteri:
$ awk 'length()>10' geeksforgeeks.txt> Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loopSintassi:
awk options 'selection _criteria {action }' input-file>file-di-output>Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt>Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt>Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print $1,$4}' employee.txt>Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi.
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,$0}' employee.txt>Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print $1,$NF}' employee.txt>Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt>Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>1 - A 2 - Tarun 3 – Manav 4 - Praveen>2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt>B A12 B6 M42>3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt>13>5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt>3>6) Stampa di righe con più di 10 caratteri:
$ awk 'length($0)>10' geeksforgeeks.txt>Tarun A12 1 Praveen M42 3>7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt>8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'>square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
Tarun A12 1 Praveen M42 3>
7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if( == 'B6') print Awk è un linguaggio di scripting utilizzato per manipolare dati e generare report. Il linguaggio di programmazione dei comandi awk non richiede compilazione e consente all'utente di utilizzare variabili, funzioni numeriche, funzioni stringa e operatori logici.
Awk è un'utilità che consente al programmatore di scrivere programmi piccoli ma efficaci sotto forma di istruzioni che definiscono modelli di testo da cercare in ogni riga di un documento e l'azione da intraprendere quando viene trovata una corrispondenza all'interno di un documento. linea. Awk viene utilizzato principalmente per la scansione e l'elaborazione dei pattern. Cerca uno o più file per vedere se contengono righe che corrispondono ai modelli specificati e quindi esegue le azioni associate.
Awk è l'abbreviazione dei nomi degli sviluppatori: Aho, Weinberger e Kernighan.
COSA POSSIAMO FARE CON AWK?
1. Operazioni AWK:
(a) Esegue la scansione di un file riga per riga
(b) Divide ciascuna riga di input in campi
(c) Confronta la linea/i campi di input con il modello
(d) Esegue azioni sulle linee abbinate
2. Utile per:
(a) Trasformare i file di dati
(b) Produrre report formattati
3. Costrutti di programmazione:
(a) Formattare le righe di output
(b) Operazioni aritmetiche e sulle stringhe
(c) Condizionali e loop
Sintassi:
awk options 'selection _criteria {action }' input-file>file-di-output> Opzioni:
-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument. -F fs : Use fs for the input field separator>
Comandi di esempio
Esempio:
Considera il seguente file di testo come file di input per tutti i casi seguenti:
$cat>dipendente.txt>>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
1. Comportamento predefinito di Awk: Per impostazione predefinita, Awk stampa ogni riga di dati dal file specificato.
$ awk '{print}' employee.txt> Produzione:
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>
Nell'esempio sopra non viene fornito alcun modello. Quindi le azioni sono applicabili a tutte le linee. L'azione print senza alcun argomento stampa l'intera riga per impostazione predefinita, quindi stampa tutte le righe del file senza errori.
2. Stampa le linee che corrispondono al modello dato.
$ awk '/manager/ {print}' employee.txt> Produzione:
ajay manager account 45000 varun manager sales 50000 amit manager account 47000>
Nell'esempio sopra, il comando awk stampa tutta la riga che corrisponde a 'manager'.
3. Suddivisione di una riga in campi: Per ogni record, ovvero riga, il comando awk divide per impostazione predefinita il record delimitato dal carattere di spazio bianco e lo memorizza nelle variabili $n. Se la riga ha 4 parole, verrà memorizzata rispettivamente in $1, $2, $3 e $4. Inoltre, $ 0 rappresenta l'intera linea.
$ awk '{print $1,$4}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio precedente, $1 e $4 rappresentano rispettivamente i campi Nome e Stipendio.
Variabili integrate in Awk
Le variabili integrate di Awk includono le variabili di campo—$1, $2, $3 e così via ($0 è l'intera riga) — che dividono una riga di testo in singole parole o parti chiamate campi.
NR: il comando NR mantiene il conteggio corrente del numero di record di input. Ricorda che i record sono solitamente linee. Il comando Awk esegue le istruzioni pattern/azione una volta per ciascun record in un file. NF: il comando NF conta il numero di campi all'interno del record di input corrente. FS: il comando FS contiene il carattere separatore di campo utilizzato per dividere i campi sulla riga di input. L'impostazione predefinita è lo spazio bianco, ovvero lo spazio e i caratteri di tabulazione. FS può essere riassegnato a un altro carattere (tipicamente in BEGIN) per modificare il separatore di campo. RS: il comando RS memorizza il carattere separatore del record corrente. Poiché, per impostazione predefinita, una riga di input è il record di input, il carattere separatore di record predefinito è una nuova riga. OFS: il comando OFS memorizza il separatore del campo di output, che separa i campi quando Awk li stampa. Il valore predefinito è uno spazio vuoto. Ogni volta che la stampa ha diversi parametri separati da virgole, stamperà il valore di OFS tra ciascun parametro. ORS: Il comando ORS memorizza il separatore dei record di output, che separa le righe di output quando Awk le stampa. Il valore predefinito è un carattere di nuova riga. print stampa automaticamente il contenuto di ORS alla fine di qualunque cosa venga data da stampare.
Esempi:
Utilizzo delle variabili integrate NR (numero di riga di visualizzazione)
$ awk '{print NR,$0}' employee.txt> Produzione:
1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>
Nell'esempio sopra, il comando awk con NR stampa tutte le righe insieme al numero di riga.
Utilizzo delle variabili integrate NF (Visualizza ultimo campo)
$ awk '{print $1,$NF}' employee.txt> Produzione:
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>
Nell'esempio sopra $1 rappresenta il nome e $NF rappresenta lo stipendio. Possiamo ottenere lo stipendio usando $NF , dove $NF rappresenta l'ultimo campo.
Un altro utilizzo delle variabili integrate NR (Riga di visualizzazione da 3 a 6)
$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt> Produzione:
3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>
Altri esempi
Per il file di testo specificato:
$cat>geeksforgeeks.txt A B C Tarun A12 1 Uomo B6 2 Praveen M42 3>
1) Per stampare il primo elemento insieme al numero di riga (NR) separato con - da ogni riga in geeksforgeeks.txt:
$ awk '{print NR '- ' $1 }' geeksforgeeks.txt> 1 - A 2 - Tarun 3 – Manav 4 - Praveen>
2) Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
La domanda dovrebbe essere: - Per restituire la seconda colonna/elemento da geeksforgeeks.txt:
$ awk '{print $2}' geeksforgeeks.txt> B A12 B6 M42>
3) Per stampare l'eventuale riga non vuota se presente
$ awk 'NF <0' geeksforgeeks.txt>
qui NF dovrebbe essere 0 non inferiore a e l'utente deve stampare anche il numero di riga:
risposta corretta: awk 'NF == 0 {print NR}' geeksforgeeks.txt
O
awk 'NF <= 0 {print NR}' geeksforgeeks.txt
0>
4) Per trovare la lunghezza della riga più lunga presente nel file:
$ awk '{ if (length($0)>massimo) massimo = lunghezza($0) } FINE { print massimo }' geeksforgeeks.txt> 13>
5) Per contare le righe in un file:
$ awk 'END { print NR }' geeksforgeeks.txt> 3>
6) Stampa di righe con più di 10 caratteri:
$ awk 'length($0)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>
7) Per trovare/controllare qualsiasi stringa in qualsiasi colonna specifica:
$ awk '{ if($3 == 'B6') print $0;}' geeksforgeeks.txt> 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>
;}' geeksforgeeks.txt> 8) Per stampare i quadrati dei primi numeri da 1 a n dire 6:
$ awk 'BEGIN { for(i=1;i<=6;i++) print 'square of', i, 'is',i*i; }'> square of 1 is 1 square of 2 is 4 square of 3 is 9 square of 4 is 16 square of 5 is 25 square of 6 is 36>