У овом нашем делу Серија команди Линук Авк, погледаћемо једну од најважнијих карактеристика Авк, што је уређивање поља.
Добро је то знати Авк аутоматски дели улазне линије које су му дате на поља, а поље се може дефинисати као скуп знакова који су одвојени од других поља унутрашњим сепаратором поља.
Ако сте упознати са Уник/Линук -ом или га познајете програмирање басх љуске, онда бисте требали знати који је унутрашњи сепаратор поља (ИФС) променљива је. Подразумевани ИФС у Авк -у су таб и размак.
Овако функционише идеја раздвајања поља Авк: када наиђе на улазну линију, према дефинисаном ИФС -у, први скуп знакова је прво поље, коме се приступа помоћу $1, други скуп знакова је поље два, којем се приступа помоћу $2, трећи скуп знакова је поље три, којем се приступа помоћу $3 и тако даље до последњег скупа знакова.
Да бисмо боље разумели ово уређивање поља Авк, погледајмо примере у наставку:
Пример 1: Направио сам текстуалну датотеку под називом тецминтинфо.ткт.
# ви тецминтинфо.ткт. # мачка тецминтинфо.ткт.
Затим из командне линије покушавам да одштампам први, друго и трећи поља из датотеке тецминтинфо.ткт помоћу наредбе испод:
$ авк '// {принт $ 1 $ 2 $ 3}' тецминтинфо.ткт ТецМинт.цомистхе.
Из горњег излаза можете видети да се знакови из прва три поља штампају на основу ИФС дефинисано који је простор:
$1
.$2
.$3
.Ако сте приметили у штампаном испису, вредности поља се не раздвајају и овако се штампање подразумевано понаша.
Да бисте јасно видели излаз са размаком између вредности поља, морате да додате (,)
оператер на следећи начин:
$ авк '// {принт $ 1, $ 2, $ 3; } 'тецминтинфо.ткт ТецМинт.цом је.
Једна важна ствар коју треба запамтити и увек је запамтити је да употреба ($)
у Авк разликује се од његове употребе у скрипти љуске.
Под скриптама љуске ($)
користи се за приступ вредности променљивих док је у Авк($)
користи се само при приступу садржају поља, али не и за приступ вредности променљивих.
Пример 2: Погледајмо још један пример користећи датотеку која садржи више редова тзв ми_схопинг.лист.
Не Јединица_Назив Јединица_Цена Количина Цена. 1 миш #20.000 1 #20.000. 2 Монитор #500,000 1 #500,000. 3 РАМ_Чипови #150,000 2 #300,000. 4 Етхернет_кабла #30,000 4 #120,000
Реците да сте хтели само да штампате Цена по јединици
сваке ставке на листи за куповину, мораћете да покренете наредбу испод:
$ авк '// {принт $ 2, $ 3}' ми_схоппинг.ткт Итем_Наме Унит_Прице. Миш #20.000. Монитор #500.000. РАМ_Чипови #150.000. Етхернет_каблови #30.000.
Авк такође има а принтф
команда која вам помаже да форматирате излаз је леп начин јер видите да горњи излаз није довољно јасан.
Користећи принтф
форматирати излаз Назив производа и Цена по јединици:
$ авк '// {принтф " %-10с %с \ н", $ 2, $ 3}' ми_схоппинг.ткт Итем_Наме Унит_Прице. Миш #20.000. Монитор #500.000. РАМ_Чипови #150.000. Етхернет_каблови #30.000.
Уређивање поља је веома важно при употреби Авк да бисте филтрирали текст или низове, помаже вам да добијете одређене податке у колонама на листи. И увек запамтите да употреба ($)
оператер у Авк разликује се од оног у скрипти љуске.
Надам се да вам је чланак био од помоћи, а за све додатне информације или питања можете поставити коментар у одељку за коментаре.