Tgħallem Kif Tuża Varjabbli Inkorporati Awk - Parti 10
Hekk kif niskopru t-taqsima tal-karatteristiċi tal-Awk, f'din il-parti tas-serje, se nimxu permezz tal-kunċett tal-varjabbli integrati f'Awk. Hemm żewġ tipi ta 'varjabbli li tista' tuża f'Awk, dawn huma; varjabbli definiti mill-utent, li koprejna fil-Parti 8 u varjabbli inkorporati.
Il-varjabbli inkorporati għandhom valuri diġà definiti f'Awk, iżda nistgħu wkoll nibdlu bir-reqqa dawk il-valuri, il-varjabbli inkorporati jinkludu:
FILENAME
: l-isem tal-fajl tal-input kurrenti( tbiddilx l-isem tal-varjabbli)FR
: in-numru tal-linja tad-dħul kurrenti (jiġifieri l-linja tad-dħul 1, 2, 3... hekk fuq, tibdelx l-isem tal-varjabbli)NF
: in-numru ta' oqsma fil-linja tal-input kurrenti (ma tibdelx l-isem tal-varjabbli)OFS
: separatur tal-kamp tal-ħruġFS
: separatur tal-qasam tad-dħulORS
: separatur tar-rekord tal-ħruġRS
: separatur tar-rekord tad-dħul
Ejja nipproċedu biex nuru l-użu ta 'xi wħud mill-varjabbli Awk built-in hawn fuq:
Biex taqra l-isem tal-fajl tal-fajl tal-input kurrenti, tista' tuża l-varjabbli inkorporat FILENAME
kif ġej:
$ awk ' { print FILENAME } ' ~/domains.txt
Inti tirrealizza li, l-isem tal-fajl huwa stampat għal kull linja ta 'input, jiġifieri l-imġieba default ta' Awk meta tuża FILENAME
varjabbli built-in.
Meta tuża NR
biex tgħodd in-numru ta 'linji (rekords) f'fajl input, ftakar li, tgħodd ukoll il-linji vojta, kif se naraw fl-eżempju hawn taħt.
Meta naraw il-fajl domains.txt bl-użu tal-kmand tal-qtates, fih 14-il linja bit-test u 2 linji vojta:
$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Biex tgħodd in-numru ta’ oqsma f’rekord jew linja, nużaw il-varjabbli inkorporat NR kif ġej:
$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Sussegwentement, tista 'wkoll tispeċifika separatur tal-kamp ta' input billi tuża l-varjabbli inkorporat FS
, tiddefinixxi kif Awk jaqsam il-linji tad-dħul f'oqsma.
Il-valur default għal FS
huwa spazju u tab, iżda nistgħu nibdlu l-valur ta 'FS
għal kwalunkwe karattru li jagħti struzzjonijiet lil Awk biex jaqsam il-linji ta' input kif xieraq.
Hemm żewġ metodi biex tagħmel dan:
- metodu wieħed huwa li tuża l-varjabbli built-in FS
- u t-tieni hija li tinvoka l-għażla -F Awk
Ikkunsidra l-fajl /etc/passwd fuq sistema Linux, l-oqsma f'dan il-fajl huma maqsuma bl-użu tal-karattru :
, sabiex inkunu nistgħu nispeċifikawha bħala s-separatur il-ġdid tal-field input meta rridu niffiltraw ċerti oqsma bħal fl-eżempji li ġejjin:
Nistgħu nużaw l-għażla -F
kif ġej:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd
B'għażla, nistgħu wkoll nieħdu vantaġġ mill-varjabbli inkorporat FS
kif ġej:
$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Biex tispeċifika separatur tal-output field, uża l-varjabbli inkorporat OFS
, tiddefinixxi kif l-output fields se jiġu separati billi tuża l-karattru li nużaw bħal fl-eżempju hawn taħt:
$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
F'din il-Parti 10, esplorajna l-idea li nużaw varjabbli Awk built-in li jiġu b'valuri predefiniti. Iżda nistgħu wkoll nibdlu dawn il-valuri, għalkemm, mhux rakkomandat li tagħmel dan sakemm ma tkunx taf x'qed tagħmel, b'fehim adegwat.
Wara dan, ser nagħmlu progress biex inkopru kif nistgħu nużaw varjabbli tal-qoxra f'operazzjonijiet ta 'kmand Awk, għalhekk, nibqgħu konnessi ma' Tecmint.