Awk

Как да отпечатате набор от колони с помощта на командата 'awk'

Как да отпечатате набор от колони с помощта на командата 'awk'
Командата 'awk' е една от многото команди, които могат да се използват за отпечатване на набор от колони от таблични данни в Linux. Командата 'awk' може да се използва директно от терминала чрез изпълнение на скрипт файла 'awk'. В този урок ще ви покажем как да отпечатате набор от колони от таблични данни.

Пример 1: Отпечатайте диапазон от колони от изхода на команда

Следващата команда ще отпечата втората, третата и четвъртата колона от изхода на командата, Аз съм -l'. Тук номерата на колоните са посочени изрично, но по-ефективна команда за отпечатване на същия диапазон от колони е показана в следващия пример.

$ ls -l | awk 'print $ 2, $ 3, $ 4'

Следният изход се получава от командата по-горе.

Пример 2: Отпечатайте диапазона от колони от файл с помощта на за цикъл

За да следвате този пример и другите примери в този урок, създайте текстов файл с име марки.текст със следното съдържание:

ID CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Следващата команда 'awk' ще отпечата първите три колони от марки.текст. The за цикъл се използва за отпечатване на стойностите на колоната и цикълът включва три стъпки. The NF променливата показва общия брой полета или колони на файла.

$ котка марки.текст
$ awk 'за (i = 1; i<=NF-1;i++) printf $i" "; print ""' marks.txt

Следният изход ще бъде получен чрез стартиране на командата. Резултатът показва студента ИД и марките за CSE203 и CSE102.

Пример 3: Отпечатайте диапазона от колони, като дефинирате начална и крайна променливи

Следващата команда 'awk' ще отпечата първите три колони от изхода на командата 'ls -l' чрез инициализиране на стартиране и завършващ променливи. Тук стойността на стартиране променливата е 1, а стойността на завършващ променливата е 3. Тези променливи се итерират в цикъл for, за да се отпечатат стойностите на колоните.

$ ls -l | awk 'BEGIN първо = 1; последно = 3
за (i = първо; i < last; i++) printf("%s ", $i) print $last '

След изпълнението на командата ще се появи следният изход. Изходът показва първите три стойности на колоната на изхода, 'ls -l'.

Пример 4: Отпечатайте диапазон от колони от файл с форматиране

Следващата команда "awk" ще отпечата първите три колони на марки.текст използвайки printf и разделител на изходното поле (OFS). Тук цикълът for включва три стъпки и три колони ще бъдат отпечатани последователно от файла. OFS се използва тук за добавяне на интервал между колоните. Когато стойността на брояча на цикъла (i) е равна на завършващ променлива, тогава се генерира нов ред (\ n).

$ котка марки.текст
$ awk -v старт = 1 -v край = 3 'за (i = старт; i<=end;i++) printf("%s%s",
$ i, (i == край) ? "\ n": OFS) 'марки.текст

След изпълнението на горните команди ще се генерира следният изход.

Пример 5: Отпечатайте диапазона от колони от файл, като използвате условен оператор

Следващата команда 'awk' ще отпечата първата и последната колона от файл, като използва цикъл for и оператор if. Тук цикълът for включва четири стъпки. The стартиране и завършващ променливите се използват в скрипта за пропускане на втората и третата колона от файла, като се използва условието if. Променливата OFS се използва за добавяне на интервал между колоните, а променливата ORS се използва за добавяне на нов ред (\ n) след отпечатване на последната колона.

$ котка марки.текст
$ awk -v начало = 2 -v край = 3 'за (i = 1; i<=NF;i++)
if (i> = старт && i<=end) continue;
else printf ("% s% s", $ i, (i!= NF) ? OFS: ORS) 'марки.текст

След изпълнението на горните команди ще се появи следният изход. Резултатът показва първата и последната колони от марки.текст.

Пример 6: Отпечатайте диапазона от колони от файл, като използвате променливата NF

Следващата команда 'awk' ще отпечата първата и последната колона от файла чрез NF променлива. За отпечатване на стойностите на колоните не се използват цикли или условни изрази. NF показва броя на полетата. Има четири колони в марки.текст. $ (NF-3) дефинира първата колона, а $ NF показва последната колона.

$ котка марки.текст
$ awk 'print $ (NF-3) "" $ NF' марки.текст

Следният изход се получава чрез изпълнение на горните команди. Резултатът показва първата и последната колони от марки.текст.

Пример 7: Отпечатайте диапазона от колони от файл, използвайки substr () и index ()

Функцията index () връща позиция, ако втората стойност на аргумента съществува в стойността на първия аргумент. Функцията substr () може да приема три аргумента. Първият аргумент е стойност на низ, вторият аргумент е началната позиция, а третият аргумент е дължината. Третият аргумент на substr () е пропуснат в следната команда. Тъй като колоната започва от $ 1 в командата 'awk', функцията index () ще върне $ 3 и командата ще отпечата от $ 3 до $ 4.

$ котка марки.текст
$ awk 'print substr ($ 0, index ($ 0, $ 3))' марки.текст

Следните резултати ще бъдат получени чрез изпълнение на горните команди.

Пример 8: Отпечатайте последователно диапазон от колони от файл, използвайки printf

Следващата команда 'awk' ще отпечата първата, втората и третата колона от марки.txt, като зададете достатъчно място за 10 знака.

$ котка марки.текст
$ awk '// printf "% 10s% 10s% 10s \ n", $ 1, $ 3, $ 2' марки.текст

Следните резултати ще бъдат получени чрез изпълнение на горните команди.

Заключение

Има различни начини за отпечатване на диапазона от колони от командния изход или файл. Този урок показва как командата 'awk' може да помогне на потребителите на Linux да печатат съдържание от таблични данни.

Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...
Екранен тракпад и указател на мишката на AppyMouse за таблети с Windows
Потребителите на таблети често пропускат показалеца на мишката, особено когато са привични да използват лаптопите. Смартфоните и таблетите със сензоре...
Средният бутон на мишката не работи в Windows 10
The среден бутон на мишката ви помага да превъртате дълги уеб страници и екрани с много данни. Ако това спре, добре ще свършите да използвате клавиату...