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:

  1. FILENAME : orukọ faili titẹ sii lọwọlọwọ (maṣe yi orukọ iyipada pada)
  2. 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)
  3. NF : nọmba awọn aaye ni laini titẹ sii lọwọlọwọ (maṣe yi orukọ iyipada pada)
  4. OFS : oluyapa aaye o wu
  5. FS : oluyapa aaye titẹ sii
  6. ORS : olupilẹṣẹ igbasilẹ o wu
  7. 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:

  1. ọna kan ni lati lo oniyipada ti a ṣe sinu FS
  2. 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.