Како одштампати низ колона помоћу команде `авк`

How Print Range Columns Using Awk Command



Команда `авк` је једна од многих наредби које се могу користити за штампање низа колона из табеларних података у Линуку. Команда `авк` се може користити директно са терминала извршавањем датотеке` авк` скрипте. У овом водичу ћемо вам показати како одштампати низ колона из табеларних података.

Пример 1: Одштампајте опсег колона са излаза наредбе

Следећа команда ће одштампати другу, трећу и четврту колону из излаза команде, ‘Лс -л ‘. Овде су бројеви колона експлицитно наведени, али ефикаснија команда за штампање истог распона колона приказана је у следећем примеру.







$лс -тхе | авк '{принт $ 2, $ 3, $ 4}'

Следећи излаз производи горња команда.





Пример 2: Одштампајте опсег колона из датотеке помоћу а за петља

Да бисте пратили овај пример и остале примере у овом водичу, направите текстуалну датотеку под називом маркс.ткт са следећим садржајем :





ИД ЦСЕ203 ЦСЕ102 ЦСЕ202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Следећа команда `авк` штампаће прве три колоне маркс.ткт. Тхе за лооп се користи за штампање вредности колоне, а петља укључује три корака. Тхе НФ променљива означава укупан број поља или колона датотеке.

$мачкамаркс.ткт
$авк '{за (и = 1; и<=NF-1;i++) printf $i' '; print ''}'маркс.ткт

Следећи излаз ће бити произведен покретањем наредбе. Резултат приказује ученика ИД -ове и ознаке за ЦСЕ203 и ЦСЕ102 .



Пример 3: Одштампајте опсег колона дефинисањем почетне и завршне променљиве

Следећа команда `авк` ће одштампати прве три колоне из наредбе излаз 'лс -л' покретањем почевши и завршетак Променљиве. Овде је вредност почевши променљива је 1, а вредност завршетак променљива је 3. Ове променљиве се понављају у петљи фор за штампање вредности колоне.

$лс -тхе | авк 'БЕГИН {фирст = 1; последњи = 3}
{фор (и = прво; и

Следећи излаз ће се појавити након покретања наредбе. Излаз приказује прве три вриједности ступца излаза, 'лс -л'.

Пример 4: Одштампајте опсег колона из датотеке са форматирањем

Следећа команда `авк` штампаће прве три колоне датотеке маркс.ткт Користећи принтф и сепаратор излазног поља ( ОФС ). Овде петља фор укључује три корака, а три колоне ће се штампати у низу из датотеке. ОФС овде се користи за додавање размака између колона. Када је вредност бројача петље (и) једнака завршетак променљиву, затим се генерише нови ред ( н).

$мачкамаркс.ткт
$авк почетак=1 крај=3 '{фор (и = почетак; и<=end;i++) printf('%s%s',
$ и, (и == крај)? ' н': ОФС)} '
маркс.ткт

Следећи излаз ће бити генерисан након извршавања горњих команди.

Пример 5: Одштампајте опсег колона из датотеке користећи условни израз

Следећа команда `авк` штампаће прву и последњу колону из датотеке помоћу фор петље и иф наредбе. Овде петља фор укључује четири корака. Тхе почевши и завршетак променљиве се користе у скрипти за изостављање друге и треће колоне из датотеке коришћењем услова иф. Варијабла ОФС се користи за додавање размака између колона, а променљива ОРС се користи за додавање новог реда ( н) након штампања последње колоне.

$мачкамаркс.ткт
$авк почетак=2 крај=3 '{за (и = 1; и<=NF;i++)
иф (и> = старт && и<=end) continue;
елсе принтф ('%с%с', $ и, (и! = НФ)? ОФС: ОРС)} '
маркс.ткт

Следећи излаз ће се појавити након покретања горњих команди. Излаз приказује прву и посљедњу колону маркс.ткт.

Пример 6: Одштампајте опсег колона из датотеке помоћу НФ променљиве

Следећа команда `авк` штампаће прву и последњу колону из датотеке помоћу НФ променљиве. За штампање вредности колоне не користе се петље или условни искази. НФ означава број поља. У маркс.ткт постоје четири колоне. $ (НФ-3) дефинише прву колону, а $ НФ означава последњу колону.

$мачкамаркс.ткт
$авк '{принт $ (НФ-3)' '$ НФ}'маркс.ткт

Следећи излаз се производи покретањем горњих команди. Излаз приказује прву и посљедњу колону маркс.ткт.

Пример 7: Одштампајте опсег колона из датотеке помоћу субстр () и индек ()

Функција индек () враћа позицију ако вредност другог аргумента постоји у вредности првог аргумента. Функција субстр () може узети три аргумента. Први аргумент је вредност низа, други аргумент је почетна позиција, а трећи аргумент је дужина. Трећи аргумент субстр () је изостављен у следећој команди. Пошто колона почиње од $ 1 у наредби `авк`, функција индек () ће вратити 3 $, а команда ће одштампати од 3 $ до 4 $.

$мачкамаркс.ткт
$авк '{принт субстр ($ 0, индекс ($ 0, $ 3))}'маркс.ткт

Следећи излаз ће бити произведен покретањем горе наведених команди.

Пример 8: Узастопно одштампајте низ колона из датотеке помоћу принтф

Следећа команда `авк` штампаће прву, другу и трећу колону маркс.ткт постављањем довољно простора за 10 знакова.

$мачкамаркс.ткт
$авк '// {принтф' %10с %10с %10с н ', $ 1, $ 3, $ 2}'маркс.ткт

Следећи излаз ће бити произведен покретањем горе наведених команди.

Закључак

Постоје различити начини за штампање опсега колона из излаза наредбе или датотеке. Овај водич показује како команда `авк` може помоћи корисницима Линука да одштампају садржај из табеларних података.