Awk

Как разделить файл строк с помощью Awk

Как разделить файл строк с помощью Awk
Команда Linux awk (сокращенно от имен разработчиков; Aho, Weinberger и Kernighan) - отличный способ обработать и проанализировать файл строк. Чтобы файлы были более информативными, они должны быть организованы в виде строк и столбцов. Затем вы можете использовать awk для этих файлов, чтобы:

В этой статье мы объясним базовое использование команды awk и то, как ее можно использовать для разделения файла строк. Мы выполнили примеры из этой статьи в системе Debian 10 Buster, но их можно легко воспроизвести на большинстве дистрибутивов Linux.

Образец файла, который мы будем использовать

Пример файла строк, который мы будем использовать для демонстрации использования команды awk, выглядит следующим образом:

Вот что указывает каждый столбец файла примера:

Пример 1. Используйте Awk для печати всех строк файла

Печать каждой строки указанного файла является поведением команды awk по умолчанию. В следующем синтаксисе команды awk мы не указываем какой-либо шаблон, который awk должен печатать, поэтому предполагается, что команда применяет действие «print» ко всем строкам файла.

Синтаксис:

$ awk 'print' имя файла.текст

Пример:

В этом примере я приказываю команде awk напечатать содержимое моего файла примера построчно.

$ awk 'print' образец_файла.текст

Пример 2: используйте awk для печати только тех строк, которые соответствуют заданному шаблону

С помощью awk вы можете указать шаблон, и команда будет печатать только строки, соответствующие этому шаблону.

Синтаксис:

$ awk '/ pattern_to_be_matched / print' имя файла.текст

Пример:

Если из образца файла я хочу напечатать только те строки, которые содержат переменную 'B', я могу использовать следующую команду:

$ awk '/ B / print' sample_file.текст

Чтобы пример был более осмысленным, позвольте мне распечатать только информацию о сотрудниках, которые являются профессорами.

$ awk '/ Professor / print' sample_file.текст

Команда печатает только строки / записи, содержащие строку «профессор», поэтому мы получаем более ценную информацию, полученную из данных.

Пример 3. Используйте awk для разделения файла так, чтобы печатались только определенные поля / столбцы

Вместо того, чтобы печатать весь файл, вы можете заставить awk печатать только определенные столбцы файла. Awk по умолчанию обрабатывает все слова, разделенные пробелом, в строке как запись столбца. Он хранит запись в переменной $ N. Где $ 1 представляет первое слово, $ 2 хранит второе слово, $ 3 - четвертое и т. Д. $ 0 сохраняет всю строку, поэтому печатается строка who, как описано в примере 1.

Синтаксис:

$ awk 'напечатать $ N,… .' имя файла.текст

Пример:

Следующая команда напечатает только первый столбец (имя) и второй столбец (тему) моего файла образца:

$ awk 'print $ 1, $ 2' sample_file.текст

Пример 4: Используйте Awk для подсчета и печати количества строк, в которых совпадает шаблон

Вы можете указать awk подсчитать количество строк, в которых совпадает указанный шаблон, а затем вывести это 'count'.

Синтаксис:

$ awk '/ pattern_to_be_matched / ++ cnt END print "Count =", cnt'
имя файла.текст

Пример:

В этом примере я хочу подсчитать количество людей, преподающих предмет «английский». Поэтому я скажу команде awk, чтобы она соответствовала шаблону «english» и напечатала количество строк, в которых соответствует этот шаблон.

$ awk '/ english / ++ cnt END print "Count =", cnt' sample_file.текст

Подсчет здесь предполагает, что 2 человека изучают английский язык по образцу файловых записей.

Пример 5: используйте awk для печати только строк с более чем определенным количеством символов

Для этой задачи мы будем использовать встроенную функцию awk под названием «length». Эта функция возвращает длину входной строки. Таким образом, если мы хотим, чтобы awk печатал только строки с количеством символов больше или даже меньше, мы можем использовать функцию длины следующим образом:

Для печати строк с символами больше числа:

$ awk 'длина ($ 0)> n' имя файла.текст

Для печати строк с символами меньше числа:

длина $ awk ($ 0) < n' filename.txt

Где n - количество символов, которые вы хотите указать для строки.

Пример:

Следующая команда распечатает только те строки из моего образца файла, которые содержат символы более 30:

$ awk 'длина ($ 0)> 30' файл_выборки.текст

Пример 6: Использование awk для сохранения вывода команды в другой файл

Используя оператор перенаправления '>', вы можете использовать команду awk для вывода ее вывода в другой файл. Вот как вы можете его использовать:

$ awk 'criterion_to_print "имя файла.txt> выходной файл.текст

Пример:

В этом примере я буду использовать оператор перенаправления с моей командой awk для печати только имен сотрудников (столбец 1) в новый файл:

$ awk 'print $ 1' sample_file.txt> employee_names.текст

Я проверил с помощью команд cat, что новый файл содержит только имена сотрудников.

Пример 7: Использование awk для печати только непустых строк из файла

В Awk есть несколько встроенных команд, которые можно использовать для фильтрации вывода. Например, команда NF используется для подсчета полей в текущей входной записи. Здесь мы будем использовать команду NF для печати только непустых строк файла:

$ awk 'NF> 0' файл_выборки.текст

Очевидно, вы можете использовать следующую команду для печати пустых строк:

$ awk 'NF < 0' sample_file.txt

Пример 8: использование awk для подсчета общего количества строк в файле

Другая встроенная функция, называемая NR, ведет подсчет количества входных записей (обычно строк) данного файла. Эту функцию в awk можно использовать для подсчета количества строк в файле следующим образом:

$ awk 'END print NR' sample_file.текст

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

Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...