Kọ ẹkọ Bii o ṣe le Lo Awari Awọn-itumọ ti Awk - Apakan 10
Bi a ṣe ṣii apakan ti awọn ẹya Awk, ni apakan yii ti jara, a yoo rin nipasẹ imọran ti awọn oniyipada ti a ṣe sinu Awk. Awọn oriṣi meji ti awọn oniyipada ti o le lo ni Awk, iwọnyi ni; awọn oniyipada ti a ṣalaye olumulo, eyiti a bo ni Apá 8 ati awọn oniyipada ti a ṣe sinu.
Awọn oniyipada ti a ṣe sinu ni awọn iye ti a ti ṣalaye tẹlẹ ni Awk, ṣugbọn a tun le farabalẹ yi awọn iye wọnyẹn pada, awọn oniyipada ti a ṣe sinu pẹlu:
-
FILENAME
: orukọ faili titẹ sii lọwọlọwọ (maṣe yi orukọ iyipada pada) -
FR
: nọmba ti laini titẹ sii lọwọlọwọ (iyẹn ni ila titẹ sii 1, 2, 3… bẹẹ bẹẹ lọ, maṣe yi orukọ iyipada pada) -
NF
: nọmba awọn aaye ni laini titẹ sii lọwọlọwọ (maṣe yi orukọ iyipada pada) -
OFS
: oluyapa aaye o wu -
FS
: oluyapa aaye titẹ sii -
ORS
: olupilẹṣẹ igbasilẹ o wu -
RS
: oluya igbasilẹ igbasilẹ
Jẹ ki a tẹsiwaju lati ṣe apejuwe lilo diẹ ninu awọn oniyipada Awk ti a ṣe sinu loke:
Lati ka orukọ faili ti faili ifunni lọwọlọwọ, o le lo FILENAME
oniyipada ti a ṣe sinu bi atẹle:
$ awk ' { print FILENAME } ' ~/domains.txt
Iwọ yoo mọ pe, a tẹ orukọ faili naa jade fun laini titẹ sii kọọkan, iyẹn ni ihuwasi aiyipada ti Awk nigbati o ba lo FILENAME
oniyipada ti a ṣe sinu.
Lilo NR
lati ka nọmba awọn ila (awọn igbasilẹ) ninu faili titẹ sii, ranti pe, o tun ka awọn ila ti o ṣofo, bi a o ti rii ninu apẹẹrẹ ni isalẹ.
Nigba ti a ba wo awọn faili domains.txt nipa lilo pipaṣẹ ologbo, o ni awọn ila 14 pẹlu ọrọ ati ofo awọn ila 2:
$ cat ~/domains.txt
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Lati ka nọmba awọn aaye ninu igbasilẹ kan tabi laini, a lo oniyipada NR ti a ṣe sinu atẹle:
$ cat ~/names.txt
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Nigbamii ti, o tun le ṣafihan pato ipinya aaye aaye titẹ sii nipa lilo FS
oniyipada ti a ṣe sinu, o ṣalaye bi Awk ṣe pin awọn ila titẹ sii si awọn aaye.
Iye aiyipada fun FS
ni aye ati taabu, ṣugbọn a le yi iye FS
si eyikeyi ohun kikọ ti yoo kọ Awk lati pin awọn ila titẹ sii ni ibamu.
Awọn ọna meji lo wa lati ṣe eyi:
- ọna kan ni lati lo oniyipada ti a ṣe sinu FS
- ati ekeji ni lati bẹbẹ aṣayan -F Awk
Wo faili/ati be be lo/passwd lori eto Linux kan, awọn aaye inu faili yii ti pin nipa lilo ohun kikọ :
, nitorinaa a le ṣalaye rẹ gẹgẹ bi oluyatọ aaye ifunni tuntun nigba ti a fẹ ṣe àlẹmọ awọn aaye kan bi ninu awọn apẹẹrẹ wọnyi:
A le lo aṣayan -F
bi atẹle:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd
Ni aṣayan, a tun le lo anfani ti FS
oniyipada ti a ṣe sinu bi isalẹ:
$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Lati ṣalaye ipinya oko aaye ti o wu, lo OFS
oniyipada ti a ṣe sinu rẹ, o ṣalaye bi awọn aaye ifunni yoo ṣe yapa ni lilo kikọ ti a lo bi apẹẹrẹ ni isalẹ:
$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
Ninu Apakan 10 yii, a ti ṣawari imọran ti lilo Awk awọn oniyipada ti a ṣe sinu eyiti o wa pẹlu awọn iye ti a ti pinnu tẹlẹ. Ṣugbọn a tun le yi awọn iye wọnyi pada, botilẹjẹpe, a ko ṣe iṣeduro lati ṣe bẹ ayafi ti o ba mọ ohun ti o n ṣe, pẹlu oye ti o pe.
Lẹhin eyi, a yoo ni ilọsiwaju lati bo bii a ṣe le lo awọn oniyipada ikarahun ninu awọn iṣẹ aṣẹ Awk, nitorinaa, wa ni asopọ si Tecmint.