Как да отпечатате диапазон от колони с помощта на командата `awk`

How Print Range Columns Using Awk Command



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

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

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







$ls -на | awk '{отпечатайте $ 2, $ 3, $ 4}'

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





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

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





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` ще отпечата първите три колони на marks.txt. The за loop се използва за отпечатване на стойностите на колоната, а цикълът включва три стъпки. The NF променливата показва общия брой полета или колони на файла.

$коткаmarks.txt
$awk '{for (i = 1; i<=NF-1;i++) printf $i' '; print ''}'marks.txt

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



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

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

$ls -на | awk 'BEGIN {first = 1; последно = 3}
{for (i = първо; i

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

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

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

$коткаmarks.txt
$awk -v започнете=1 -v край=3 '{for (i = начало; i<=end;i++) printf('%s%s',
$ i, (i == край)? ' n': OFS)} '
marks.txt

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

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

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

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

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

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

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

$коткаmarks.txt
$awk '{print $ (NF-3)' '$ NF}'marks.txt

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

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

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

$коткаmarks.txt
$awk '{print substr ($ 0, индекс ($ 0, $ 3))}'marks.txt

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

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

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

$коткаmarks.txt
$awk '// {printf' %10s %10s %10s n ', $ 1, $ 3, $ 2}'marks.txt

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

Заключение

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