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
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
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.
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.
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
+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.
$ 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
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.,
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 | 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.
$ 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.
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 ().
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ă.
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.
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.
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.,
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.,
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.
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.,
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.
$ 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””}
rulați scriptul prin următoarea comandă.
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:
Executați următoarea comandă pentru a instala bălălău pachet pentru utilizarea getsub funcția() cu awk comanda.
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
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.,
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ă.
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.
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
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.
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.
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.,
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.
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.
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.,
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.,
Ieșire:
Do-while:
o buclă do-timp de următoarea comandă va imprima toate numere de la 10 la 5.,
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
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.,
rulați comanda awk cu următorul delimiter. Partea completă a primei coloane va fi tipărită.
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-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.
$ 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.
$ 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.
$ 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.