Как распечатать диапазон столбцов с помощью команды `awk`

How Print Range Columns Using Awk Command



Команда awk - одна из многих команд, которые можно использовать для печати диапазона столбцов из табличных данных в Linux. Команду awk можно использовать прямо из терминала, выполнив файл сценария awk. В этом руководстве мы покажем вам, как распечатать диапазон столбцов из табличных данных.

Пример 1: Распечатать диапазон столбцов из вывода команды

Следующая команда напечатает второй, третий и четвертый столбцы из выходных данных команды, ‘Ls -l ‘. Здесь номера столбцов указаны явно, но в следующем примере показана более эффективная команда для печати того же диапазона столбцов.







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

Следующий вывод создается приведенной выше командой.





Пример 2: Распечатать диапазон столбцов из файла с помощью для петля

Чтобы следовать этому примеру и другим примерам в этом руководстве, создайте текстовый файл с именем 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. В для Цикл используется для печати значений столбца, и цикл включает три шага. В NF переменная указывает общее количество полей или столбцов файла.

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

Следующий вывод будет произведен при запуске команды. На выходе студент ID и отметки для CSE203 а также CSE102 .



Пример 3: Распечатайте диапазон столбцов, указав начальную и конечную переменные

Следующая команда `awk` напечатает первые три столбца из вывода команды« ls -l », инициализируя начало а также окончание переменные. Здесь значение начало переменная равна 1, а значение окончание переменная равна 3. Эти переменные повторяются в цикле for для печати значений столбца.

$ls - | awk 'НАЧАТЬ {первый = 1; last = 3}
{for (i = first; i

После выполнения команды появится следующий вывод. Вывод показывает первые три значения столбца вывода, «ls -l».

Пример 4: Распечатать диапазон столбцов из файла с форматированием

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

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

Следующий вывод будет сгенерирован после выполнения вышеуказанных команд.

Пример 5: Распечатать диапазон столбцов из файла с помощью условного оператора

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

$Котmarks.txt
$awk -v Начнитезнак равно2 -v конецзнак равно3 '{for (i = 1; i<=NF;i++)
if (i> = start && 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 () опускается в следующей команде. Поскольку столбец в команде awk начинается с $ 1, функция 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 распечатать содержимое из табличных данных.