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:
- Aaye ọkan eyiti o jẹ\"TecMint.com" ni iraye si ni lilo
$1
. - Aaye meji ti o jẹ\"jẹ" ni iraye si ni lilo
$2
. - 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
$ 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.