Aflați cum să utilizați variabilele încorporate Awk - Partea 10
Pe măsură ce descoperim secțiunea caracteristicilor Awk, în această parte a seriei, vom parcurge conceptul de variabile încorporate în Awk. Există două tipuri de variabile pe care le puteți utiliza în Awk, acestea sunt; Variabilele definite de utilizator, pe care le-am acoperit în Partea 8 și variabilele încorporate.
Variabilele încorporate au valori deja definite în Awk, dar putem modifica cu atenție acele valori, variabilele încorporate includ:
FILENAME
: numele curent al fișierului de intrare (nu schimbați numele variabilei)FR
: numărul liniei de intrare curente (adică linia de intrare 1, 2, 3... așa mai departe, nu schimbați numele variabilei)NF
: numărul de câmpuri din linia de intrare curentă (nu modificați numele variabilei)OFS
: separator de câmpuri de ieșireFS
: separator de câmpuri de intrareORS
: separator de înregistrări de ieșireRS
: separator de înregistrare de intrare
Să continuăm să ilustrăm utilizarea unora dintre variabilele încorporate Awk de mai sus:
Pentru a citi numele fișierului de intrare curent, puteți utiliza variabila încorporată FILENAME
după cum urmează:
awk ' { print FILENAME } ' ~/domains.txt
Veți realiza că, numele fișierului este tipărit pentru fiecare linie de intrare, acesta este comportamentul implicit al Awk atunci când utilizați variabila încorporată FILENAME
.
Folosind NR
pentru a număra numărul de linii (înregistrări) dintr-un fișier de intrare, rețineți că, numără și liniile goale, așa cum vom vedea în exemplul de mai jos.
Când vedem fișierul domains.txt folosind comanda cat, acesta conține 14 linii cu text și 2 linii goale:
cat ~/domains.txt
awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Pentru a număra numărul de câmpuri dintr-o înregistrare sau linie, folosim variabila încorporată NR după cum urmează:
cat ~/names.txt
awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
În continuare, puteți specifica și un separator de câmpuri de intrare folosind variabila încorporată FS
, care definește modul în care Awk împarte liniile de intrare în câmpuri.
Valoarea implicită pentru FS
este spațiu și tab, dar putem schimba valoarea FS
cu orice caracter care va instrui Awk să împartă liniile de intrare în consecință.
Există două metode pentru a face acest lucru:
- o metodă este să folosiți variabila încorporată FS
- iar al doilea este să invoci opțiunea -F Awk
Luați în considerare fișierul /etc/passwd pe un sistem Linux, câmpurile din acest fișier sunt împărțite folosind caracterul :
, astfel încât să îl putem specifica ca noul separator de câmpuri de intrare când dorim să filtram anumite câmpuri ca în următoarele exemple:
Putem folosi opțiunea -F
după cum urmează:
awk -F':' '{ print $1, $4 ;}' /etc/passwd
Opțional, putem profita și de variabila încorporată FS
, după cum urmează:
awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Pentru a specifica un separator de câmpuri de ieșire, utilizați variabila încorporată OFS
, care definește modul în care câmpurile de ieșire vor fi separate folosind caracterul pe care îl folosim ca în exemplul de mai jos:
awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
În această Partea 10, am explorat ideea de a folosi variabilele încorporate Awk care vin cu valori predefinite. Dar putem schimba și aceste valori, totuși, nu este recomandat să faceți acest lucru decât dacă știți ce faceți, cu o înțelegere adecvată.
După aceasta, vom progresa pentru a acoperi modul în care putem folosi variabilele shell în operațiunile de comandă Awk, prin urmare, rămâneți conectat la Tecmint.