AWK в Linux: простые примеры для начинающих.

Если вы начинаете изучать командную строку Linux, то наверняка сталкивались с таким мощным инструментом, как AWK. Этот язык программирования для обработки текста помогает автоматизировать работу с файлами, анализировать данные и делать полезные преобразования.

В этой статье я расскажу, что такое AWK, и дам несколько простых примеров использования.

Что такое AWK?

AWK — это команда в Linux для поиска, фильтрации и обработки данных в текстовых файлах. Она особенно хороша, когда нужно работать с таблицами или раздельными данными. Программа разбирает строки и позволяет легко извлекать нужные столбцы, подсчитывать суммы, искать строки по шаблону и делать многое другое.

Почему стоит использовать AWK?

  • Прост в освоении
  • Работает быстро и эффективно
  • Подходит для обработки больших объемов данных
  • Есть встроенные функции и возможности для сложных задач

Основные понятия AWK

Поля — это отдельные части строки, разделённые пробелом или другим символом (например, запятой).

Формат строки — по умолчанию разделяет по пробелам, но можно задать любой разделитель.

Команды — внутри AWK можно писать условия, обработчики и действия.

Основные команды AWK с примерами

У нас есть тестовый файл list.txt со следующим содержанием:

[root@waky practice]# cat list.txt
John Doe 33 Seattle
Ivan Ivanov 44 Moscow
Jane Doe 22 Chicago
[root@waky practice]#

Его мы будем использовать в примерах.

1. Вывод определённых столбцов

Чтобы вывести только имена (первый столбец) выполним следующую команду:

[root@waky practice]# awk '{print $1}' list.txt
John
Ivan
Jane
[root@waky practice]#

По умолчанию, awk разбивает строку по пробелам. $1 — обращение к первому элементу. Если мы хотим вывести города (четвертый столбец), достаточно только поменять цифру:

[root@waky practice]# awk '{print $4}' list.txt
Seattle
Moscow
Chicago
[root@waky practice]#

2. Использование сравнений

Кроме простого вывода данных, awk может совершать над ними базовые операции, например сравнение:

[root@waky practice]# awk '$2=="Doe"' list.txt
John Doe 33 Seattle
Jane Doe 22 Chicago
[root@waky practice]#

Вывод содержит только те строки, где второй столбец (фамилия) равна Doe.

Можно работать и с числовыми значениями:

[root@waky practice]# awk '$3 > 35' list.txt
Ivan Ivanov 44 Moscow
[root@waky practice]#

Тут будут только строки, где третий столбец (возраст) больше 35.

3. Подсчёт суммы числовых значений

Мы можем просуммировать весь столбец следующим образом:

[root@waky practice]# awk '{sum += $3} END {print sum}' list.txt
99
[root@waky practice]#

Мы нашли сумму всех чисел из третьего столбца.

4. Использование разделителя

Не всегда данные в файле разделены пробелами. Часто используются другие символы, например — запятые. Сделаем копию нашего файла, только заменим в нем пробелы запятыми. В этом нам поможет команда sed:

[root@waky practice]# sed 's/ /,/g' list.txt > list.csv
[root@waky practice]#

Проверим содержимое нового файла командой cat:

[root@waky practice]# cat list.csv
John,Doe,33,Seattle
Ivan,Ivanov,44,Moscow
Jane,Doe,22,Chicago
[root@waky practice]#

Можем использовать все те же команды что и раньше, только укажем запятую в качестве разделителя. Для этого используется опция -F:

[root@waky practice]# awk -F',' '{print $1}' list.csv
John
Ivan
Jane
[root@waky practice]# 

Заключение

AWK — это мощный и гибкий инструмент для работы с текстом в Linux. Начинающему пользователю важно понять основные команды и принципы работы, чтобы легко анализировать файлы и автоматизировать рутинные задачи. Экспериментируйте с примерами, и скоро вы будете использовать AWK как профессионал!