Если вы начинаете изучать командную строку Linux, то наверняка сталкивались с таким мощным инструментом, как AWK. Этот язык программирования для обработки текста помогает автоматизировать работу с файлами, анализировать данные и делать полезные преобразования.
В этой статье я расскажу, что такое AWK, и дам несколько простых примеров использования.
Что такое AWK?
AWK — это команда в Linux для поиска, фильтрации и обработки данных в текстовых файлах. Она особенно хороша, когда нужно работать с таблицами или раздельными данными. Программа разбирает строки и позволяет легко извлекать нужные столбцы, подсчитывать суммы, искать строки по шаблону и делать многое другое.
Почему стоит использовать AWK?
- Прост в освоении
- Работает быстро и эффективно
- Подходит для обработки больших объемов данных
- Есть встроенные функции и возможности для сложных задач
Основные понятия AWK
Поля — это отдельные части строки, разделённые пробелом или другим символом (например, запятой).
Формат строки — по умолчанию разделяет по пробелам, но можно задать любой разделитель.
Команды — внутри AWK можно писать условия, обработчики и действия.
Основные команды AWK с примерами
- 1. Вывод определённых столбцов
- 2. Использование сравнений
- 3. Подсчёт суммы числовых значений
- 4. Использование разделителя
У нас есть тестовый файл 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 как профессионал!