Bii o ṣe le Lo Awk lati tẹ Awọn aaye ati Awọn ọwọn ni Faili


Ni apakan yii ti Lainos Awk aṣẹ wa, a yoo ni wo ọkan ninu awọn ẹya pataki julọ ti Awk, eyiti o jẹ ṣiṣatunṣe aaye.

O dara lati mọ pe Awk pin awọn ila titẹ sii laifọwọyi ti a pese si rẹ si awọn aaye, ati pe aaye kan le ṣalaye bi ṣeto awọn ohun kikọ ti o yapa si awọn aaye miiran nipasẹ oluyapa aaye inu.

Ti o ba mọmọ pẹlu Unix/Linux tabi ṣe siseto ikarahun bash, lẹhinna o yẹ ki o mọ kini iyatọ ti aaye separator inu (IFS) jẹ. IFS aiyipada ni Awk jẹ taabu ati aye.

Eyi ni bi imọran iyapa aaye ṣe n ṣiṣẹ ni Awk: nigbati o ba pade laini titẹ sii, ni ibamu si IFS ti a ṣalaye, ipilẹ awọn ohun kikọ akọkọ jẹ aaye akọkọ, eyiti o wọle si ni lilo $1, ẹya keji ti awọn kikọ jẹ aaye meji, eyiti ti wa ni lilo nipa lilo $2, ṣeto awọn ohun kikọ kẹta jẹ aaye mẹta, eyiti o wọle nipa lilo $3 ati bẹ siwaju titi di kikọ (s) ti o kẹhin.

Lati ni oye ṣiṣatunkọ aaye Awk yii dara julọ, jẹ ki a wo awọn apẹẹrẹ ni isalẹ:

Apẹẹrẹ 1: Mo ti ṣẹda faili ọrọ ti a pe ni tecmintinfo.txt.

# vi tecmintinfo.txt
# cat tecmintinfo.txt

Lẹhinna lati laini aṣẹ, Mo gbiyanju lati tẹjade awọn aaye akọkọ, keji ati ẹkẹta lati faili tecmintinfo.txt ni lilo aṣẹ ni isalẹ:

$ awk '//{print $1 $2 $3 }' tecmintinfo.txt

TecMint.comisthe

Lati iṣẹjade loke, o le rii pe awọn ohun kikọ lati awọn aaye mẹta akọkọ ni a tẹjade da lori IFS ti o ṣalaye eyiti o jẹ aaye:

  1. Aaye ọkan eyiti o jẹ\"TecMint.com" ni iraye si ni lilo $1 .
  2. Aaye meji ti o jẹ\"jẹ" ni iraye si ni lilo $2 .
  3. Aaye mẹta ti o jẹ\"naa" ni iraye si ni lilo $3 .

Ti o ba ti ṣakiyesi ninu iṣẹjade ti a tẹjade, awọn iye aaye ko pin ati pe eyi ni bi atẹjade ṣe huwa aiyipada.

Lati wo iṣẹjade ni kedere pẹlu aaye laarin awọn iye aaye, o nilo lati ṣafikun (,) oniṣẹ bi atẹle:

$ awk '//{print $1, $2, $3; }' tecmintinfo.txt

TecMint.com is the

Ohun pataki kan lati ṣe akiyesi ati nigbagbogbo ranti ni pe lilo ti ($) ni Awk yatọ si lilo rẹ ninu iwe afọwọkọ ikarahun.

Labẹ iwe afọwọkọ ikarahun ($) ni a lo lati wọle si iye awọn oniyipada lakoko ti o wa ni Awk ($) o lo nikan nigbati o ba wọle si awọn akoonu ti aaye kan ṣugbọn kii ṣe fun iraye si iye ti awọn oniyipada.

Apẹẹrẹ 2: Jẹ ki a wo apẹẹrẹ miiran ni lilo faili kan eyiti o ni awọn ila pupọ ti a pe ni my_shoping.list.

No	Item_Name		Unit_Price	Quantity	Price
1	Mouse			#20,000		   1		#20,000
2 	Monitor			#500,000	   1		#500,000
3	RAM_Chips		#150,000	   2		#300,000
4	Ethernet_Cables	        #30,000		   4		#120,000		

Sọ pe o fẹ lati tẹ nikan Unit_Price ti ohunkan kọọkan lori atokọ rira, iwọ yoo nilo lati ṣiṣe aṣẹ ni isalẹ:

$ awk '//{print $2, $3 }' my_shopping.txt 

Item_Name Unit_Price
Mouse #20,000
Monitor #500,000
RAM_Chips #150,000
Ethernet_Cables #30,000

Awk tun ni aṣẹ titẹ sita ti o ṣe iranlọwọ fun ọ lati ṣe agbejade iṣẹjade rẹ jẹ ọna ti o wuyi bi o ti le rii iṣujade ti o wa loke ko ṣe kedere to.

Lilo tẹjade lati ṣe agbejade iṣelọpọ ti Item_Name ati Unit_Price:

$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt 

Item_Name  Unit_Price
Mouse      #20,000
Monitor    #500,000
RAM_Chips  #150,000
Ethernet_Cables #30,000

Akopọ

Ṣiṣatunṣe aaye jẹ pataki pupọ nigba lilo Awk lati ṣe àlẹmọ ọrọ tabi awọn gbolohun ọrọ, o ṣe iranlọwọ fun ọ lati gba data pataki ni awọn ọwọn ninu atokọ kan. Ati nigbagbogbo ranti pe lilo ti ($) onišẹ ni Awk yatọ si ti iyẹn ni kikọ iwe ikarahun.

Mo nireti pe nkan naa ṣe iranlọwọ fun ọ ati fun eyikeyi alaye afikun ti o nilo tabi awọn ibeere, o le firanṣẹ asọye ni apakan asọye.