Molti strumenti di utilità esistono nel sistema operativo Linux per cercare e generare un report da dati di testo o file. L’utente può facilmente eseguire molti tipi di ricerca, sostituzione e generare report attività utilizzando awk, grep e comandi sed. awk non è solo un comando. Si tratta di un linguaggio di scripting che può essere utilizzato sia da terminale e file awk. Supporta la variabile, l’istruzione condizionale,l’array, i loop ecc. come altri linguaggi di scripting., Può leggere qualsiasi contenuto di file riga per riga e separare i campi o le colonne in base a un delimitatore specifico. Supporta anche l’espressione regolare per la ricerca di una particolare stringa nel contenuto del testo o nel file e intraprende azioni se viene trovata una corrispondenza. Come è possibile utilizzare il comando awk e lo script è mostrato in questo tutorial utilizzando 20 esempi utili.,un

  • awk con i dati csv
  • awk regex
  • awk distinzione tra maiuscole e minuscole regex
  • awk con nf (il numero di campi) variabile
  • awk gensub funzione ()
  • awk con rand() funzione
  • awk funzione definita dall’utente
  • awk se
  • awk variabili
  • array awk
  • awk loop
  • awk per stampare la prima colonna
  • awk per stampare l’ultima colonna
  • awk con grep
  • awk con lo script bash file
  • con awk, sed
  • usare awk printf

    printf() funzione viene utilizzata per qualsiasi formato di output nella maggior parte dei linguaggi di programmazione., Questa funzione può essere utilizzata con il comando awk per generare diversi tipi di output formattati. comando awk utilizzato principalmente per qualsiasi file di testo. Creare un file di testo denominato employee.txt con il contenuto indicato di seguito in cui i campi sono separati da tab (‘\t’).

    dipendente.txt

    1001 John sena 40000
    1002 Jafar Iqbal 60000
    1003 Meher Nigar 30000
    1004 Jonny Liver 70000

    Il seguente comando awk leggerà i dati dal dipendente.file txt riga per riga e stampare il primo archiviato dopo la formattazione. Qui, “%10s\n ” significa che l’output sarà lungo 10 caratteri., Se il valore dell’output è inferiore a 10 caratteri, gli spazi verranno aggiunti nella parte anteriore del valore.

    aw awk ‘{ printf “%10s\n”, employee 1 }’ dipendente.txt

    Output:

    Vai al contenuto

    awk per dividere lo spazio bianco

    Il separatore di parole o campi predefinito per dividere qualsiasi testo è lo spazio bianco. comando awk può prendere il valore di testo come input in vari modi. Il testo di input viene passato dal comando echo nell’esempio seguente., Il testo, ‘Mi piace la programmazione’ verrà diviso per separatore predefinito, spazio e la terza parola verrà stampata come output.

    $ echo ‘mi piace di programmazione’ | awk ‘{ print $3 }’

    Uscita:

    Vai al Contenuto

    awk per cambiare il delimitatore

    comando awk può essere utilizzato per modificare il delimitatore per qualsiasi contenuto del file. Supponiamo che tu abbia un file di testo chiamato telefono.txt con il seguente contenuto dove‘: ‘viene utilizzato come separatore di campo del contenuto del file.

    telefono.,txt

    +123:334:889:778
    +880:1855:456:907
    +9:7777:38644:808

    Eseguire il seguente comando awk per modificare il delimitatore,‘: ’ ‘ e’ il contenuto del file, telefono.txt.

    phone telefono gatto.txt
    aw awk ‘1 1=FS 1’ FS=”: “OFS =” – ” telefono.txt

    Output:

    Vai al contenuto

    awk con dati delimitati da tabulazioni

    il comando awk ha molte variabili integrate che vengono utilizzate per leggere il testo in modi diversi. Due di loro sono FS e OFS., FS è separatore di campo di input e OFS è variabili di separatore di campo di output. Gli usi di queste variabili sono mostrati in questa sezione. Creare un file separato da tabulazioni denominato input.txt con il seguente contenuto per testare gli usi delle variabili FS e OFS.

    Ingresso.txt

    Linguaggio di scripting lato client
    Linguaggio di scripting lato server
    Server database
    Server Web

    Utilizzando la variabile FS con tab

    Il seguente comando dividerà ogni riga di input.file txt basato sulla scheda (’\t’) e stampare il primo campo di ogni riga.,

    aw awk ‘{ print input 1 }’ FS=’\t’ input.txt

    Output:

    Usando la variabile OFS con tab

    Il seguente comando awk stamperà il 9 ° e il 5 ° campo dell’output del comando ‘ls-l’ con il separatore di tabulazioni dopo aver stampato il titolo della colonna “Nome” e “Dimensione”. Qui, la variabile OFS viene utilizzata per formattare l’output con una scheda.,

    $ ls -l
    $ ls -l | awk -v OFS=’\t’ ‘BEGIN { printf “%s\t%s\n”, “Nome”, “Size”} {print $9,$5}’

    Uscita:

    Vai al Contenuto

    awk con i dati CSV

    Il contenuto di qualsiasi file CSV possono essere analizzati in diversi modi utilizzando il comando awk. Creare un file CSV denominato ‘ cliente.csv ‘ con il seguente contenuto per applicare il comando awk.

    cliente.txt

    Lettura singolo campo del file CSV

    ‘-F’ opzione viene utilizzata con il comando awk per impostare il delimitatore per dividere ogni riga del file., Il seguente comando awk stamperà il campo nome del cliente.file csv.

    customer cliente cat.csv
    aw awk-F “,” ‘{print customer 2}’ cliente.csv

    Output:

    Lettura di più campi combinando con altro testo

    Il seguente comando stamperà tre campi del cliente.csv combinando testo del titolo, Nome, e-mail e Telefono. La prima linea del cliente.il file csv contiene il titolo di ogni campo. La variabile NR contiene il numero di riga del file quando il comando awk analizza il file., In questo esempio, la variabile NR viene utilizzata per omettere la prima riga del file. L’output mostrerà i campi 2nd, 3rd e 4th di tutte le righe tranne la prima riga.

    aw awk-F “,” ‘NR& gt;1 {stampa “Nome:” $ 2 “, Email:” $3 “, Telefono:” customer 4}’ cliente.csv

    Output:

    Lettura del file CSV utilizzando uno script awk

    lo script awk può essere eseguito eseguendo il file awk. Come è possibile creare file awk ed eseguire il file è mostrato in questo esempio. Creare un file denominato awkcsv.awk con il seguente codice., La parola chiave BEGIN viene utilizzata nello script per informare il comando awk per eseguire lo script della parte BEGIN prima di eseguire altre attività. Qui, il separatore di campo (FS) viene utilizzato per definire il delimitatore di divisione e i campi 2nd e 1st verranno stampati in base al formato utilizzato nella funzione printf ().

    awkcsv.awk
    BEGIN {FS =”,”} {printf “%5s (%s)\n”, $2,$1}

    Esegui awkcsv.file awk con il contenuto del cliente.file csv con il seguente comando.

    aw awk-f awkcsv.cliente awk.,csv

    Output:

    Vai al contenuto

    awk regex

    L’espressione regolare è un modello che viene utilizzato per cercare qualsiasi stringa in un testo. Diversi tipi di ricerca complicata e sostituire le attività può essere fatto molto facilmente utilizzando l’espressione regolare. Alcuni semplici usi dell’espressione regolare con il comando awk sono mostrati in questa sezione.

    Set di caratteri corrispondenti

    Il seguente comando corrisponderà alla parola Fool o bool o Cool con la stringa di input e stamperà se la parola viene trovata., Qui, la bambola non corrisponderà e non stamperà.

    $ printf “Pazzo\nCool\nDoll\nbool” | awk ‘/ool/’

    Uscita:

    stringa di Ricerca all’inizio della riga

    ‘^’ simbolo è utilizzato nell’espressione regolare per la ricerca di qualsiasi modello di partenza della linea. La parola ‘Linux’ verrà cercata all’inizio di ogni riga del testo nell’esempio seguente. Qui, due righe iniziano con il testo, ‘Linux’ e queste due righe verranno mostrate nell’output.,

    $ echo-e “Linux è gratuito per uso\n si tratta di un software open-source\nLinuxHint è
    un popolare blog del sito” | awk ‘/^Linux/’

    Uscita:

    stringa di Ricerca alla fine della riga

    simbolo‘$’ è usata nell’espressione regolare per la ricerca di qualsiasi modello alla fine di ogni riga di testo. La parola ‘Script’ viene cercata nel seguente esempio. Qui, due righe contengono la parola, Script alla fine della riga.,

    $ echo-e “Script PHP\nJavaScript\nVisual di Programmazione” | awk ‘/Script$/’

    Uscita:

    Ricerca omettendo particolare il set di caratteri

    ‘^’ simbolo indica la partenza del testo quando viene utilizzato davanti a qualsiasi modello di stringa ( ‘ / ^ … / ’ ), o prima di qualsiasi set di caratteri dichiarato dall’ ^. Se il simbolo ‘ ^ ‘ viene utilizzato all’interno della terza parentesi, il set di caratteri definito all’interno della parentesi verrà omesso al momento della ricerca., Il seguente comando cercherà qualsiasi parola che non inizia con ‘F’ ma termina con ‘ool’. Cool e bool saranno stampati in base al modello e ai dati di testo.

    $ printf “Pazzo\nCool\nDoll\nbool” | awk ‘/ool/’

    Uscita:

    Vai al Contenuto

    awk distinzione tra maiuscole e minuscole regex

    per impostazione predefinita, espressione regolare non case sensitive di ricerca durante la ricerca di qualsiasi modello nella stringa. La ricerca senza distinzione tra maiuscole e minuscole può essere eseguita dal comando awk con l’espressione regolare., Nell’esempio seguente, la funzione tolower () viene utilizzata per eseguire ricerche senza distinzione tra maiuscole e minuscole. Qui, la prima parola di ogni riga del testo di input verrà convertita in minuscolo usando la funzione tolower () e corrisponderà al modello di espressione regolare. toupper () funzione può essere utilizzato anche per questo scopo, in questo caso, il modello deve essere definito da tutte le lettere maiuscole. Il testo definito nell’esempio seguente contiene la parola di ricerca, ‘web’ in due righe che verranno stampate come output.,

    $ echo-e “Web Design\nweb sviluppo\nFramework” | awk ‘tolower($0) ~ /^/ web;’

    Uscita:

    Vai al Contenuto

    awk con NF (il numero di campi) variabile

    NF è un built-in variabile di comando awk che viene utilizzato per contare il numero totale di campi di ogni riga di testo di input. Creare qualsiasi file di testo con più righe e più parole. input.qui viene utilizzato il file txt creato nell’esempio precedente.,

    Utilizzando NF dalla riga di comando

    Qui, il primo comando viene utilizzato per visualizzare il contenuto di input.file txt e secondo comando viene utilizzato per mostrare il numero totale di campi in ogni riga del file utilizzando la variabile NF.

    input ingresso cat.txt
    input awk ‘{stampa NF}’ ingresso.txt

    Output:

    Utilizzando NF nel file awk

    Creare un file awk denominato count.awk con lo script indicato di seguito. Quando questo script verrà eseguito con qualsiasi dato di testo, ogni contenuto di riga con campi totali verrà stampato come output.

    conta.,awk

    {print 0 0}
    {print””}

    Eseguire lo script con il seguente comando.

    count awk-f count.ingresso awk.txt

    Output:

    Vai al contenuto

    awk gensub() function

    getsub() è una funzione di sostituzione che viene utilizzata per cercare stringa in base a un particolare delimitatore o modello di espressione regolare. Questa funzione è definita nel pacchetto ‘gawk’ che non è installato di default. La sintassi per questa funzione è riportata di seguito., Il primo parametro contiene il modello di espressione regolare o il delimitatore di ricerca, il secondo parametro contiene il testo sostitutivo, il terzo parametro indica come verrà eseguita la ricerca e l’ultimo parametro contiene il testo in cui verrà applicata questa funzione.

    Sintassi:

    gensub(regexp, replacement, how)

    Eseguire il seguente comando per installare il pacchetto gawk per l’utilizzo della funzione getsub() con il comando awk.

    su sudo apt-get install gawk

    Crea un file di testo chiamato ‘salesinfo.,txt ‘ con il seguente contenuto per praticare questo esempio. Qui, i campi sono separati da una scheda.

    salesinfo.txt

    Mon 700000
    Mar 800000
    Mer 750000
    Gio 200000
    Ven 430000
    Sat 820000

    Eseguire il seguente comando per leggere i campi numerici del salesinfo.file txt e stampare il totale di tutte le vendite importo. Qui, il terzo parametro, ‘G’ indica la ricerca globale. Ciò significa che il modello verrà cercato nel contenuto completo del file.,

    aw awk ‘{ x=gensub(“\t”,””,”G”, 2 2); printf x “+” } END{ print 0 }’ salesinfo.txt/bc-l

    Output:

    Vai al contenuto

    awk con la funzione rand ()

    la funzione rand() viene utilizzata per generare qualsiasi numero casuale maggiore di 0 e inferiore a 1. Quindi, genererà sempre un numero frazionario inferiore a 1. Il seguente comando genererà un numero casuale frazionario e moltiplicherà il valore con 10 per ottenere un numero superiore a 1., Un numero frazionario con due cifre dopo il punto decimale verrà stampato per l’applicazione della funzione printf (). Se si esegue il seguente comando più volte, si otterrà un output diverso ogni volta.

    aw awk ‘BEGIN {printf “Number is =%.2f\n” , rand()*10}’

    Output:

    Vai al contenuto

    awk funzione definita dall’utente

    Tutte le funzioni utilizzate negli esempi precedenti sono funzioni integrate. Ma puoi dichiarare una funzione definita dall’utente nel tuo script awk per eseguire qualsiasi attività particolare., Supponiamo di voler creare una funzione personalizzata per calcolare l’area di un rettangolo. Per eseguire questa operazione, creare un file denominato ‘area.awk ‘ con il seguente script. In questo esempio, una funzione definita dall’utente denominata area() viene dichiarata nello script che calcola l’area in base ai parametri di input e restituisce il valore dell’area. il comando getline è usato qui per prendere input dall’utente.area

    .awk

    Eseguire lo script.

    area area awk-f.,awk

    Output:

    Vai al contenuto

    awk se esempio

    awk supporta istruzioni condizionali come altri linguaggi di programmazione standard. Tre tipi di istruzioni if sono mostrati in questa sezione utilizzando tre esempi. Creare un file di testo denominato elementi.txt con il seguente contenuto.

    elementi.txt

    HDD Samsung $100
    Mouse A4Tech
    Stampante HP HP 200

    Semplice se esempio:

    il seguente comando leggerà il contenuto degli elementi.txt e controllare il 3 ° valore del campo in ogni riga., Se il valore è vuoto, verrà stampato un messaggio di errore con il numero di riga.

    aw awk ‘{ if (if 3 == “”) print “Price field is missing in line” NR }’ items.txt

    Output:

    if-else esempio:

    Il seguente comando stamperà il prezzo dell’articolo se il 3 ° campo esiste nella riga, altrimenti stamperà un messaggio di errore.

    aw awk ‘ {if (if 3==””) print “Campo Prezzo mancante”
    else print “il prezzo dell’articolo è” items 3 }’ items.,txt

    Output:

    if-else-if esempio:

    Quando il seguente comando verrà eseguito dal terminale, prenderà input dall’utente. Il valore di input verrà confrontato con ogni condizione if fino a quando la condizione è vera. Se una condizione diventa vera, stamperà il grado corrispondente. Se il valore di input non corrisponde a nessuna condizione, verrà stampato fail.,

    $ awk ‘BEGIN { print “Inserisci il marchio”
    getline mark < “-“
    se (marco >= 90) print “A+”
    else if( marco >= 80) print “A”
    else if( marco >= 70) print “B+”
    else print “Errore” }’

    Uscita:

    Vai al Contenuto

    awk variabili

    La dichiarazione di awk variabile è simile per la dichiarazione della variabile di shell. C’è una differenza nella lettura del valore della variabile., Il simbolo ‘ $ ‘ viene utilizzato con il nome della variabile per la variabile shell per leggere il valore. Ma non è necessario utilizzare ’ $ ‘ con la variabile awk per leggere il valore.

    Usando la variabile semplice:

    Il seguente comando dichiarerà una variabile denominata ‘site’ e a quella variabile verrà assegnato un valore stringa. Il valore della variabile viene stampato nell’istruzione successiva.

    aw awk ‘BEGIN{ site=”LinuxHint.,com”; print site} ‘

    Output:

    Utilizzando una variabile per recuperare i dati da un file

    Il seguente comando cercherà la parola’ Stampante ‘ negli elementi del file.txt. Se una riga del file inizia con “Stampante”, memorizzerà il valore dei campi 1st, 2nd e 3rd in tre variabili. verranno stampate le variabili nome e prezzo.

    aw awk ‘ / Printer / {name=$1;brand=$2;price=$3; print “item name=” name;
    print “item price=” price }’ items.,txt

    Output:

    Vai al contenuto

    awk array

    Entrambi gli array numerici e associati possono essere utilizzati in awk. La dichiarazione della variabile Array in awk è la stessa di altri linguaggi di programmazione. Alcuni usi degli array sono mostrati in questa sezione.

    Array associativo:

    L’indice dell’array sarà qualsiasi stringa per l’array associativo. In questo esempio, un array associativo di tre elementi viene dichiarato e stampato.,

    Output:

    Array numerico:

    Un array numerico di tre elementi viene dichiarato e stampato separando tab.

    Output:

    Vai al contenuto

    awk loop

    Tre tipi di loop sono supportati da awk. Gli usi di questi loop sono mostrati qui usando tre esempi.

    While loop:

    while loop che viene utilizzato nel seguente comando itererà per 5 volte e uscirà dal ciclo per l’istruzione break.,

    $ awk ‘BEGIN { n = 1; while (n <= 10) { if(n > 5) break; stampa n; n++ } }’

    Uscita:

    Per il ciclo:

    Per il ciclo che viene utilizzato il seguente comando awk per calcolare la somma da 1 a 10 e stampa il valore.,

    $ awk ‘BEGIN { somma=0; for (n = 1; n <= 10; n++) somma=somma+n); stampa somma }’

    Uscita:

    ciclo Do-while:

    un ciclo do-while il comando seguente consente di stampare tutti i numeri pari da 10 a 5.,

    $ awk ‘BEGIN {contatore = 10; do { if (contatore%2 ==0) stampa il contatore; contatore– }
    while (contatore > 5) }’

    Uscita:

    Vai al Contenuto

    awk per stampare la prima colonna

    La prima colonna di ogni file può essere stampato utilizzando $1 variabile in awk. Ma se il valore della prima colonna contiene più parole, viene stampata solo la prima parola della prima colonna. Utilizzando un delimitatore specifico, la prima colonna può essere stampata correttamente. Creare un file di testo denominato studenti.,txt con il seguente contenuto. Qui, la prima colonna contiene il testo di due parole.

    Studenti.,txt

    Kaniz Fatema 30<sup>th</sup> batch
    Abir Hossain 35<sup>th</sup> batch
    John Abraham 40<sup>th</sup> batch

    Run awk command without any delimiter. The first part of the first column will be printed.,

    students awk ‘{print students 1}’ studenti.txt

    Eseguire il comando awk con il seguente delimitatore. Verrà stampata la parte completa della prima colonna.

    aw awk-F ‘\\s\\s’ ‘{print students 1}’ studenti.txt

    Output:

    Vai al contenuto

    awk per stampare l’ultima colonna

    variable(NF) variabile può essere utilizzata per stampare l’ultima colonna di qualsiasi file. I seguenti comandi awk stamperanno l’ultima parte e la parte completa dell’ultima colonna degli studenti.file txt.,

    students awk ‘{print students(NF)}’ studenti.per maggiori informazioni clicca qui.txt

    Output:

    Vai al contenuto

    awk con grep

    grep è un altro comando utile di Linux per cercare contenuti in un file in base a qualsiasi espressione regolare. Come sia awk e grep comandi possono essere utilizzati insieme è mostrato nel seguente esempio. comando grep viene utilizzato per cercare le informazioni del dipendente id, ‘1002’ dal dipendente.file txt. L’output del comando grep verrà inviato a awk come dati di input., il bonus del 5% verrà conteggiato e stampato in base allo stipendio dell’ID dipendente, ‘1002’ dal comando awk.

    employee dipendente cat.txt
    employee grep ‘1002’ dipendente.txt / awk-F’ \ t ”{stampa $2 ” otterrà $” ($3*5)/100 “bonus”} ‘

    Output:

    Vai al contenuto

    awk con il file BASH

    Come altri comandi Linux, il comando awk può essere utilizzato anche in uno script BASH. Creare un file di testo denominato clienti.txt con il seguente contenuto. Ogni riga di questo file contiene informazioni su quattro campi., Questi sono ID del cliente, nome, indirizzo e numero di cellulare che sono separati da‘/’.

    clienti.txt

    Crea un file bash denominato item_search.bash con il seguente script. Secondo questo script, il valore dello stato verrà preso dall’utente e cercato nei clienti.file txt dal comando grep e passato al comando awk come input. Comando Awk leggerà 2 ° e 4 ° campi di ogni riga. Se il valore di input corrisponde a qualsiasi valore di stato dei clienti.file txt poi si stamperà il nome del cliente e il numero di cellulare, in caso contrario, si stamperà il messaggio “Nessun cliente trovato”.,

    item_search.bash

    Eseguire i seguenti comandi per mostrare le uscite.

    customers clienti cat.txt
    bas bash item_search.bash

    Output:

    Vai al contenuto

    awk con sed

    Un altro utile strumento di ricerca di Linux è sed. Questo comando può essere utilizzato sia per la ricerca e la sostituzione di testo di qualsiasi file. L’esempio seguente mostra l’uso del comando awk con il comando sed. Qui, il comando sed cercherà tutti i nomi dei dipendenti inizia con ‘ J ‘ e passa al comando awk come input., awk stamperà il nome e l’ID del dipendente dopo la formattazione.

    employee dipendente cat.txt
    employee sed-n ‘/ J / p ‘ dipendente.txt | awk -F ‘\t’ ‘{ printf “%s(%s)\n”, $2, $1 }’

    Uscita:

    Vai al Contenuto

    Conclusione:

    È possibile utilizzare il comando awk per creare diversi tipi di report basati su qualsiasi tabella o dati delimitati dopo aver filtrato i dati correttamente. Spero, sarai in grado di imparare come funziona il comando awk dopo aver praticato gli esempi mostrati in questo tutorial.

    Articles

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *