Hvernig á að nota Awk til að prenta reiti og dálka í skrá
Í þessum hluta af Linux Awk skipana röðinni okkar munum við skoða einn mikilvægasta eiginleika Awk, sem er sviðsbreyting.
Það er gott að vita að Awk skiptir innsláttarlínum sjálfkrafa í reiti og hægt er að skilgreina reit sem sett af stöfum sem eru aðskilin frá öðrum sviðum með innri reitskil.
Ef þú þekkir Unix/Linux eða stundar bash skel forritun, þá ættir þú að vita hvað innri sviðsskil (IFS) breyta er. Sjálfgefið IFS í Awk eru tab og space.
Svona virkar hugmyndin um reitaðskilnað í Awk: þegar hún rekst á innsláttarlínu, samkvæmt skilgreiningu IFS, er fyrsta settið af stöfum reit eitt, sem er opnað með $1, annað sett af stöfum er reit tvö, sem er opnuð með $2, þriðja sett af stöfum er reit þrjú, sem er opnuð með $3 og svo framvegis þar til síðasta settið af stöfum.
Til að skilja þessa Awk-reitbreytingu betur skulum við kíkja á dæmin hér að neðan:
Dæmi 1: Ég hef búið til textaskrá sem heitir tecmintinfo.txt.
# vi tecmintinfo.txt # cat tecmintinfo.txt
Síðan á skipanalínunni reyni ég að prenta fyrsta, annan og þriðja reitinn úr skránni tecmintinfo.txt með því að nota skipunina hér að neðan:
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe
Af úttakinu hér að ofan geturðu séð að stafirnir úr fyrstu þremur reitunum eru prentaðir út frá IFS skilgreindu sem er bil:
- Reit eitt sem er \TecMint.com“ er opnað með
$1
. - Reit tvö sem er \er\ er opnuð með
$2
. - Reit þrjú sem er \the\ er opnuð með
$3
.
Ef þú hefur tekið eftir því í prentuðu úttakinu eru svæðisgildin ekki aðskilin og þetta er hvernig prentun hegðar sér sjálfgefið.
Til að sjá úttakið skýrt með bili á milli svæðisgildanna þarftu að bæta við (,)
stjórnanda sem hér segir:
$ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com is the
Eitt mikilvægt að hafa í huga og alltaf muna er að notkun ($)
í Awk er frábrugðin notkun þess í skeljaforskriftum.
Undir skel skriftu er ($)
notað til að fá aðgang að gildi breyta á meðan í Awk ($)
er það aðeins notað þegar aðgangur er að innihaldi svæðis en ekki til að fá aðgang að gildi breyta.
Dæmi 2: Við skulum skoða eitt annað dæmi með því að nota skrá sem inniheldur margar línur sem kallast 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
Segðu að þú vildir aðeins prenta Einingarverð
af hverjum hlut á innkaupalistanum, þú þarft að keyra skipunina hér að neðan:
$ 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 er líka með printf
skipun sem hjálpar þér að forsníða úttakið þitt og er góð leið þar sem þú sérð að úttakið hér að ofan er ekki nógu skýrt.
Notkun printf
til að forsníða úttak á Item_Name og 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
Samantekt
Sviðsbreyting er mjög mikilvæg þegar Awk er notað til að sía texta eða strengi, það hjálpar þér að fá ákveðin gögn í dálka á lista. Og mundu alltaf að notkun ($)
stjórnanda í Awk er önnur en í skeljaforskriftum.
Ég vona að greinin hafi verið þér gagnleg og fyrir allar frekari upplýsingar sem krafist er eða spurningar geturðu skrifað athugasemd í athugasemdareitnum.