multe instrumente utilitare există în sistemul de operare Linux pentru a căuta și genera un raport din date text sau fișier. Utilizatorul poate efectua cu ușurință mai multe tipuri de căutare, înlocuirea și raport SARCINI generatoare folosind awk, grep și sed comenzi. awk nu este doar o comandă. Este un limbaj de scripting care poate fi folosit atât din terminal, cât și din fișierul awk. Aceasta susține variabila, declarația condiționată, matrice, bucle etc. ca și alte limbaje de scripting., Poate citi orice linie de conținut de fișier cu linie și poate separa câmpurile sau coloanele pe baza unui delimitator specific. Aceasta susține, de asemenea, expresie regulată pentru căutarea șir special în conținutul textului sau fișierul și ia măsuri în cazul în care orice potrivire founds. Cum puteti folosi awk command si script este prezentat in acest tutorial folosind 20 de exemple utile.,o

  • awk cu csv de date
  • awk regex
  • awk caz insensibil regex
  • awk cu nf (numărul de câmpuri) variabile
  • awk gensub funcția ()
  • awk cu rand() funcția
  • awk funcții definite de utilizator
  • awk dacă
  • awk variabile
  • awk matrice
  • awk bucla
  • awk pentru a imprima prima coloană
  • awk pentru a imprima ultima coloană
  • awk cu grep
  • awk cu bash script file
  • awk cu sed
  • Folosind awk cu printf

    printf() funcția este folosit pentru a formata orice ieșire în cele mai multe limbaje de programare., Această funcție poate fi utilizată cu comanda awk pentru a genera diferite tipuri de ieșiri formatate. comanda awk folosită în principal pentru orice fișier text. Creați un fișier text numit Angajat.txt cu conținutul de mai jos, unde câmpurile sunt separate prin tab (‘\t’).

    angajat.txt

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

    următoarele awk comanda va citi datele de la angajat.txt linie de fișier de linie și imprima prima depusă după formatare. Aici, „%10s\n”înseamnă că ieșirea va avea 10 caractere., Dacă valoarea ieșirii este mai mică de 10 caractere, atunci spațiile vor fi adăugate în partea din față a valorii.

    $ awk ‘{ printf” %10s\n”, $1 }’ angajat.Txt

    Output:

    du-te la conținut

    awk pentru a împărți pe spațiu alb

    separatorul implicit cuvânt sau câmp pentru divizarea orice text este spațiu alb. comanda awk poate lua valoarea textului ca intrare în diferite moduri. Textul de intrare este trecut de la comanda echo în exemplul următor., Textul, „îmi place programarea” va fi împărțit în mod implicit separator, spațiu, iar al treilea cuvânt va fi imprimat ca ieșire.

    $ echo ‘mi place de programare’ | awk ‘{ print $3 }’

    Ieșire:

    Du-te la Conținut

    awk pentru a schimba delimitatorul

    comanda awk poate fi folosit pentru a schimba delimitator pentru orice fișier de conținut. Să presupunem că aveți un fișier text numit telefon.txt cu următorul conținut în care”: „este utilizat ca separator de câmp al conținutului fișierului.

    telefon.,txt

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

    Run următoarele awk comandă pentru a modifica delimitator, ‘:’ de ‘-‘ la conținutul fișierului, telefon.txt.

    $ telefon cat.txt
    $ awk ‘$1=$1 ‘ FS=”:” OFS= ” – ” telefon.txt

    Ieșire:

    Du-te la Conținut

    awk cu tab-delimitat de date

    comanda awk are multe built-in variabile care sunt folosite pentru a citi textul în diferite moduri. Două dintre ele sunt FS și OFS., FS este separatorul câmpului de intrare și OFS este variabilele separatorului câmpului de ieșire. Utilizările acestor variabile sunt prezentate în această secțiune. Creați o filă fișier separat numit de intrare.txt cu următorul conținut pentru a testa utilizările variabilelor FS și OFS.

    intrare.txt

    Client-side limbaj de scripting
    Server-side limbaj de scripting
    Server de baze de Date
    Server Web

    Utilizarea FS variabilă cu tab

    comanda următoare va împărți fiecare linie de intrare.fișier txt bazat pe fila (‘\T’) și imprima primul câmp al fiecărei linii.,

    $ awk ‘{ print $1 }’ FS=’\t’ input.Txt

    Output:

    folosind variabila OFS cu tab

    următoarea comandă awk va imprima câmpurile 9 și 5 ale ieșirii comenzii „ls-l” cu separator tab după imprimarea titlului coloanei „nume”și ” dimensiune”. Aici, variabila OFS este utilizată pentru a formata ieșirea printr-o filă.,

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

    Ieșire:

    Du-te la Conținut

    awk cu CSV de date

    continutul din orice fișier CSV poate fi analizat în mai multe moduri, folosind awk comanda. Creați un fișier CSV numit ‘ client.csv ‘ cu următorul conținut pentru a aplica comanda awk.

    client.Txt

    citirea câmpului unic al fișierului CSV

    opțiunea’-F’ este utilizată cu comanda awk pentru a seta delimitatorul pentru împărțirea fiecărei linii a fișierului., Următoarea comandă awk va imprima câmpul Nume al clientului.fișier csv.

    $ cat client.csv
    $ awk-F”, „‘{print $2} ‘ client.csv

    ieșire:

    citirea mai multor câmpuri prin combinarea cu alt text

    următoarea comandă va imprima trei câmpuri de client.csv prin combinarea textului din titlu, a numelui, a e-mailului și a telefonului. Prima linie a clientului.fișierul csv conține titlul fiecărui câmp. Variabila NR conține numărul liniei fișierului atunci când comanda awk analizează fișierul., În acest exemplu, variabila NR este utilizată pentru a omite prima linie a fișierului. Ieșirea va afișa câmpurile 2nd, 3rd și 4th ale tuturor liniilor, cu excepția primei linii.

    $ awk -F „,” ‘NR>1 {print „Numele:” $2 „, e-Mail:” $3 „, Telefon:” $4}’ client.csv

    ieșire:

    citirea fișierului CSV folosind un script awk

    scriptul awk poate fi executat prin rularea fișierului awk. Cum puteți crea un fișier awk și rula fișierul este prezentat în acest exemplu. Creați un fișier numit awkcsv.awk cu următorul cod., Începeți cuvântul cheie este utilizat în script pentru informarea comenzii awk pentru a executa mai întâi scriptul părții BEGIN înainte de a executa alte sarcini. Aici, separatorul de câmp (FS) este utilizat pentru a defini delimitatorul de divizare, iar câmpurile 2 și 1 vor fi tipărite în funcție de formatul utilizat în funcția printf ().

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

    rulați awkcsv.fișier awk cu conținutul clientului.fișier csv prin următoarea comandă.

    $ awk -f awkcsv.client awk.,csv

    Output:

    du-te la conținut

    awk regex

    expresia regulată este un model care este folosit pentru a căuta orice șir într-un text. Diferite tipuri de sarcini complicate de căutare și înlocuire se poate face foarte ușor prin utilizarea expresiei regulate. Unele utilizări simple ale expresiei regulate cu comanda awk sunt prezentate în această secțiune.

    Potrivire set de caractere

    comanda următoare va potrivi cuvântul Prost sau bool sau Rece cu șirul de intrare și de imprimare în cazul în care cuvântul fonduri., Aici, papusa nu se va potrivi și nu de imprimare.

    $ printf „Prost\nCool\nDoll\nbool” | awk ‘/ool/’

    Ieșire:

    Căutare șir la început de linie

    ‘^’ simbolul este folosit în expresia regulată pentru a căuta orice model la început de linie. Cuvântul „Linux” va fi căutat la începutul fiecărei linii a textului în exemplul următor. Aici, două linii încep cu textul, „Linux” și aceste două linii vor fi afișate în ieșire.,

    $ echo-e „Linux-ul este gratuit pentru a utiliza\n este un software open-source\nLinuxHint este
    un blog popular site-ul” | awk ‘/^Linux/’

    Ieșire:

    Căutare șir la capăt de linie

    ‘$’ simbolul este folosit în expresia regulată pentru a căuta orice model, la sfârșitul fiecărui rând de text. Cuvântul „Script” este căutat în exemplul următor. Aici, două linii conțin cuvântul, Script – ul de la sfârșitul liniei.,

    $ echo-e „Script PHP\nJavaScript\nVisual de Programare” | awk ‘/Script$/’

    Ieșire:

    Căutarea prin omiterea anumit set de caractere

    ‘^’ simbol indică pornind de la text, atunci când este folosit în față cu orice șir de model (‘/^…/’) sau înainte de orice set de caractere declarate de ^. Dacă simbolul ” ^ ” este utilizat în interiorul celui de-al treilea suport, atunci setul de caractere definit în interiorul suportului va fi omis în momentul căutării., Următoarea comandă va căuta orice cuvânt care nu începe cu „F”, ci se termină cu „OOL”. Cool și bool vor fi tipărite în funcție de model și de datele de text.

    $ printf „Prost\nCool\nDoll\nbool” | awk ‘/ool/’

    Ieșire:

    Du-te la Conținut

    awk caz insensibil regex

    în mod implicit, expresie regulată are căutare sensibilă atunci când caută orice model în șir. Căutarea insensibilă la caz se poate face prin comanda awk cu expresia regulată., În exemplul următor, funcția tolower () este utilizată pentru a face căutarea insensibilă la caz. Aici, primul cuvânt al fiecărei linii a textului de intrare va fi convertit în litere mici folosind funcția tolower () și se va potrivi cu modelul expresiei regulate. toupper () funcția poate fi de asemenea utilizat în acest scop, în acest caz, modelul trebuie să fie definite prin toate majuscule. Textul definit în exemplul următor conține cuvântul de căutare, ” web ” în două linii care vor fi tipărite ca ieșire.,

    $ echo-e „Web Design\nweb dezvoltare\nFramework” | awk ‘pentru a reduce($0) ~ /^web/;’

    Ieșire:

    Du-te la Conținut

    awk cu NF (numărul de câmpuri) variabile

    NF este un built-in variabila de comanda awk care este folosit pentru a conta numărul total de câmpuri din fiecare linie de text de intrare. Creați orice fișier text cu mai multe linii și mai multe cuvinte. intrarea.fișier txt este folosit aici, care este creat în exemplul anterior.,

    folosind NF din linia de comandă

    aici, prima comandă este utilizată pentru a afișa conținutul de intrare.fișier txt și a doua comandă este utilizat pentru a afișa numărul total de câmpuri în fiecare linie a fișierului folosind variabila NF.

    $ cat de intrare.txt
    $ awk’ {print NF} ‘ intrare.txt

    ieșire:

    folosind NF în fișierul awk

    creați un fișier awk numit count.awk cu scenariul de mai jos. Când acest script se va executa cu orice date de text, atunci fiecare conținut linie cu câmpuri totale vor fi tipărite ca ieșire.

    conta.,awk

    {print $0}
    {print””}

    rulați scriptul prin următoarea comandă.

    $ awk-f count.intrare awk.txt

    Ieșire:

    Du-te la Conținut

    awk gensub funcția ()

    getsub() este o substituție a funcției care este folosit pentru a șirul de căutare bazate pe anumite delimitator sau expresie regulată model. Această funcție este definită în pachetul „gawk” care nu este instalat în mod implicit. Sintaxa pentru această funcție este dată mai jos., Primul parametru conține modelul expresiei regulate sau delimitatorul de căutare, al doilea parametru conține textul de înlocuire, al treilea parametru indică modul în care se va face căutarea și ultimul parametru conține textul în care va fi aplicată această funcție.

    Sintaxa:

    gensub(regexp, înlocuire, cum )

    Executați următoarea comandă pentru a instala bălălău pachet pentru utilizarea getsub funcția() cu awk comanda.

    $ sudo apt-get install bălălău

    Creați un fișier text numit ‘salesinfo.,txt’ cu următorul conținut pentru a practica acest exemplu. Aici, câmpurile sunt separate printr-o filă.

    salesinfo.txt

    Mon 700000
    Tue 800000
    Wed 750000
    Thu 200000
    Fri 430000
    Sat 820000

    Executați următoarea comandă pentru a citi câmpurile numerice de salesinfo.fișier txt și imprima totalul tuturor suma de vânzări. Aici, al treilea parametru, ” G ” indică căutarea globală. Asta înseamnă că modelul va fi căutat în întregul conținut al fișierului.,

    $ awk ‘{ x=gensub(„\t”,””,”G”,$2); printf x „+” } END{ print 0 }’ salesinfo.txt | î. hr.- l

    Ieșire:

    Du-te la Conținut

    awk cu rand() funcția

    rand() funcție este utilizată pentru a genera un număr aleator mai mare decât 0 și mai mic decât 1. Deci, va genera întotdeauna un număr fracționat mai mic de 1. Următoarea comandă va genera un număr aleatoriu fracționat și va multiplica valoarea cu 10 pentru a obține un număr mai mare de 1., Un număr fracțional cu două cifre după punctul zecimal va fi tipărit pentru aplicarea funcției printf (). Dacă executați următoarea comandă de mai multe ori, atunci veți obține o ieșire diferită de fiecare dată.

    $ awk ‘BEGIN {printf” numărul este =%.2f\n” , rand()*10}’

    Ieșire:

    Du-te la Conținut

    awk funcții definite de utilizator

    Toate funcțiile care sunt utilizate în exemplele anterioare sunt built-in functii. Dar puteți declara o funcție definită de utilizator în scriptul awk pentru a face orice sarcină particulară., Să presupunem că doriți să creați o funcție personalizată pentru a calcula aria unui dreptunghi. Pentru a face această sarcină, creați un fișier numit ‘zona.awk ‘ cu următorul script. În acest exemplu, o funcție definită de utilizator numită area() este declarată în scriptul care calculează zona pe baza parametrilor de intrare și returnează valoarea zonei. comanda getline este folosit aici pentru a lua de intrare de la utilizator.

    zona.awk

    rulați scriptul.

    $ awk-f zonă.,awk

    Ieșire:

    Du-te la Conținut

    awk dacă exemplu

    awk susține declarații condiționale ca și alte standard limbaje de programare. Trei tipuri de declarații if sunt prezentate în această secțiune folosind trei exemple. Creați un fișier text numit elemente.txt cu următorul conținut.

    articole.txt

    HDD Samsung $100
    Mouse-ul A4Tech
    imprimantă HP $200

    simplu dacă exemplu:

    el următoarea comandă va citi conținutul elementelor.fișier txt și verificați valoarea câmpului 3rd în fiecare linie., Dacă valoarea este goală, atunci va imprima un mesaj de eroare cu numărul liniei.

    $ awk ‘{ if ($3==””) print „câmpul de preț lipsește în linia” nr }’ elemente.Txt

    Output:

    if-else example:

    următoarea comandă va imprima prețul articolului dacă câmpul 3rd există în linie, în caz contrar, va imprima un mesaj de eroare.

    $ awk ‘{ if ($3==””) print”câmpul de preț lipsește „
    else print „prețul articolului este” $3} ” articole.,Txt

    Output:

    if-else-if example:

    când următoarea comandă se va executa de la terminal, atunci va lua intrare de la utilizator. Valoarea de intrare va fi comparată cu fiecare condiție if până când condiția este adevărată. Dacă orice condiție devine adevărată, atunci va imprima nota corespunzătoare. În cazul în care valoarea de intrare nu se potrivește cu orice condiție, atunci se va imprima nu.,

    $ awk ‘BEGIN { print „Enter marca:”
    getline marca < „-„
    dacă (marca >= 90) print „Un+”
    else if( marca >= 80) print „O”
    else if( marca >= 70) print „B+”
    else print „Nu” }’

    Ieșire:

    Du-te la Conținut

    awk variabile

    declarația de awk variabilă este similară cu declarația de coajă variabilă. Există o diferență în citirea valorii variabilei., simbolul ” $ ” este utilizat cu numele variabilei pentru variabila shell pentru a citi valoarea. Dar nu este nevoie să folosiți ‘ $ ‘ cu variabila awk pentru a citi valoarea.

    folosind variabila simplă:

    următoarea comandă va declara o variabilă numită „site” și o valoare șir este atribuită acelei variabile. Valoarea variabilei este tipărită în următoarea instrucțiune.

    $ awk ‘BEGIN{ ului=”LinuxHint.,com”; print-ul}’

    Ieșire:

    , Folosind o variabilă pentru a prelua date dintr-un fișier

    comanda următoare va căuta cuvântul „Imprimantă”, în elemente de fișier.txt. Dacă orice linie a fișierului începe cu „imprimantă”, atunci va stoca valoarea câmpurilor 1st, 2nd și 3rd în trei variabile. numele și variabilele de preț vor fi tipărite.

    $ awk ‘/Printer/ { name=$1;brand=$2;pret=$3;print” item name= „name;
    print” item price= ” price }’ items.,Txt

    Output:

    du-te la conținut

    matrice awk

    ambele matrice numerice și asociate pot fi utilizate în awk. Array declarație variabilă în awk este aceeași cu alte limbaje de programare. Unele utilizări ale matricelor sunt prezentate în această secțiune.

    matrice asociativă:

    indexul matricei va fi orice șir pentru matricea asociativă. În acest exemplu, o matrice asociativă de trei elemente sunt declarate și tipărite.,

    Output:

    Numeric Array:

    o matrice numerică de trei elemente sunt declarate și imprimate prin separarea tab.

    Output:

    du-te la conținut

    bucla awk

    trei tipuri de bucle sunt acceptate de awk. Utilizările acestor bucle sunt prezentate aici folosind trei exemple.

    While loop:

    while loop that is used in the following command will itera for 5 times and exit from the loop for break statement.,

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

    Ieșire:

    Pentru bucla:

    Pentru buclă, care este folosit în următoarele awk comanda va calcula suma de la 1 la 10 și de imprimare valoarea.,

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

    Ieșire:

    Do-while:

    o buclă do-timp de următoarea comandă va imprima toate numere de la 10 la 5.,

    $ awk ‘BEGIN {contor = 10; do { if (contor%2 ==0) print contra; contra– }
    while (contor > 5) }’

    Ieșire:

    Du-te la Conținut

    awk pentru a imprima prima coloană

    prima coloană din orice fișier pot fi imprimate, prin utilizarea $1 variabilă în awk. Dar dacă valoarea primei coloane conține mai multe cuvinte, atunci numai primul cuvânt al primei coloane se imprimă. Folosind un delimitator specific, prima coloană poate fi tipărită corect. Creați un fișier text numit studenți.,txt cu următorul conținut. Aici, prima coloană conține textul a două cuvinte.

    studenți.,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.,

    $ awk ‘{print $1}’ studenți.Txt

    rulați comanda awk cu următorul delimiter. Partea completă a primei coloane va fi tipărită.

    $ awk-F ‘\\s\\S’ ‘{print $1}’ studenți.txt

    Ieșire:

    Du-te la Conținut

    awk pentru a imprima ultima coloană

    $(NF) variabilă poate fi folosit pentru a imprima ultima coloană de orice fișier. Următoarele comenzi awk vor imprima ultima parte și partea completă a ultimei coloane a studenților.fișier txt.,

    $ awk ‘{print $(NF)}’ studenți.txt
    $ awk-F ‘\\s \ \ S’ ‘{print $(NF)}’ studenți.txt

    Ieșire:

    Du-te la Conținut

    awk cu grep

    grep este o altă comandă utilă de Linux pentru a căuta conținut într-un fișier bazat pe orice expresie regulată. Modul în care ambele comenzi awk și grep pot fi utilizate împreună este prezentat în exemplul următor. comanda grep este utilizată pentru a căuta informații despre ID-ul angajatului, „1002” de la angajat.fișier txt. Ieșirea comenzii grep va fi trimisă la awk ca date de intrare., Bonusul de 5% va fi numărat și tipărit pe baza salariului id-ului angajatului, „1002” prin comanda awk.

    $ angajat cat.txt
    $ grep ‘1002’ angajat.txt | awk -F ‘\t’ ‘{ print $2 ” va primi $” ($3*5)/100 „bonus”}’

    Ieșire:

    Du-te la Conținut

    awk cu BASH file

    Ca și alte de comandă Linux, awk comandă poate fi de asemenea utilizat într-un script BASH. Creați un fișier text numit clienți.txt cu următorul conținut. Fiecare linie a acestui fișier conține informații despre patru câmpuri., Acestea sunt ID-ul clientului, numele, adresa și numărul de telefon mobil care sunt separate prin”/”.

    clienți.txt

    creați un fișier bash numit item_search.bash cu următorul script. Conform acestui script, valoarea de stat va fi luată de la utilizator și căutată în clienți.fișier TXT prin comanda grep și a trecut la comanda awk ca intrare. Comanda Awk va citi câmpurile 2nd și 4th ale fiecărei linii. Dacă valoarea de intrare se potrivește cu orice valoare de stat a clienților.fișier txt, atunci se va imprima numele clientului și numărul de telefon mobil, în caz contrar, se va imprima mesajul „nici un client găsit”.,

    item_search.bash

    Rulați următoarele comenzi pentru a afișa ieșirile.

    $ clienții cat.txt
    $ bash item_search.bash

    Ieșire:

    Du-te la Conținut

    awk cu sed

    un Alt util instrument de căutare de Linux este sed. Această comandă poate fi utilizată atât pentru căutarea, cât și pentru înlocuirea textului oricărui fișier. Următorul exemplu arată utilizarea comenzii awk cu comanda sed. Aici, comanda sed va căuta toate numele angajaților începe cu ” J ” și trece la comanda awk ca intrare., awk va imprima numele angajatului și ID-ul după formatare.

    $ angajat cat.txt
    $ sed-n ‘/j/p’ angajat.txt | awk -F ‘\t’ ‘{ printf „%s(%s)\n”, $2, $1 }’

    Ieșire:

    Du-te la Conținut

    Concluzie:

    puteți folosi comanda awk pentru a crea diferite tipuri de rapoarte bazate pe orice tabel sau delimitat de date după filtrarea datelor în mod corespunzător. Sper, veți putea afla cum funcționează comanda awk după practicarea exemplelor prezentate în acest tutorial.

    Articles

    Lasă un răspuns

    Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *