Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | awk [2025/07/06 12:38] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== AWK примеры использования ====== | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Утилита awk используется для построчного разбора и обработки входного потока, | ||
+ | }} | ||
+ | **AWK** - интерпретируемый скриптовый C- подобный язык построчного разбора и обработки входного потока (например, | ||
+ | |||
+ | Awk — это мощный инструмент для обработки текстовых данных в командной строке. Он идеально подходит для анализа данных, | ||
+ | |||
+ | AWK рассматривает входной поток как список записей. Каждая запись делится на поля. На основе этой информации выполняется некоторый определённый программистом алгоритм обработки. По умолчанию разделителем записей является символ новой строки (то есть записи — это то же самое, что строки), | ||
+ | |||
+ | AWK- программа состоит из операторов (правил), | ||
+ | <file bash> | ||
+ | | ||
+ | | ||
+ | . . . | ||
+ | </ | ||
+ | Каждая запись поочерёдно сравнивается со всеми шаблонами, | ||
+ | <note tip> | ||
+ | ===== Примеры использования AWK ===== | ||
+ | Эти примеры демонстрируют базовую функциональность awk и могут быть адаптированы для различных сценариев обработки текстовых данных. | ||
+ | * Отсортировать файлы по времени создания и вывести последнюю строку< | ||
+ | ls -lt / | ||
+ | </ | ||
+ | * Печать всех строк длиннее 80 символов:< | ||
+ | $ cat install.sh | awk '{if (length($0) > 80) print $0}' | ||
+ | </ | ||
+ | * Вывести пятое поле из вывода команды [[netstat]]:< | ||
+ | $ netstat -ntu | awk ' | ||
+ | </ | ||
+ | * Вывести строки, | ||
+ | # netstat -ntu | awk '$1 == " | ||
+ | </ | ||
+ | * Завершить процесс node (слушающему [[TCP]] -порт 1277) по его PID:< | ||
+ | #!/bin/bash | ||
+ | kill -9 `lsof -i:1277 | awk '$0 ~ /node/ {print $2}'` | ||
+ | </ | ||
+ | * Вывести третью строку из файлы .bash_history< | ||
+ | # awk ' | ||
+ | </ | ||
+ | |||
+ | ==== Вывод столбцов из файла ==== | ||
+ | <file bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | Эта команда выводит первый и третий столбцы каждой строки файла `filename.txt`. | ||
+ | |||
+ | ==== Подсчет и суммирование ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk '{sum += $1} END {print sum}' filename.txt | ||
+ | </ | ||
+ | |||
+ | Здесь awk суммирует значения в первом столбце каждой строки и выводит итоговую сумму после обработки всех строк. | ||
+ | |||
+ | <file bash> | ||
+ | Фильтрация по шаблону | ||
+ | </ | ||
+ | |||
+ | <file bash> | ||
+ | awk '/ | ||
+ | </ | ||
+ | |||
+ | Эта команда печатает только те строки файла, которые соответствуют заданному шаблону `pattern`. | ||
+ | |||
+ | ==== Форматированный вывод ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | Тут awk использует функцию print` для форматированного вывода определенных столбцов. | ||
+ | |||
+ | ==== Выполнение арифметических операций ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | В этом примере awk умножает значения первого и второго столбцов каждой строки. | ||
+ | |||
+ | ==== Обработка нескольких файлов ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | Эта команда выводит имя файла, номер строки и содержимое строки для нескольких файлов. | ||
+ | |||
+ | ==== Фильтрация по условию ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk '$3 > 100 {print $1, $3}' filename.txt | ||
+ | </ | ||
+ | |||
+ | Здесь awk выводит первый и третий столбцы для строк, где значение в третьем столбце больше 100. | ||
+ | |||
+ | ==== Использование переменных ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk -v var=100 '{if ($1 > var) print $0}' filename.txt | ||
+ | </ | ||
+ | |||
+ | В этом примере используется переменная var, и awk печатает строки, | ||
+ | |||
+ | ==== Редактирование текста в строке ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | Тут awk заменяет текст old на new в каждой строке файла. | ||
+ | |||
+ | ==== Группировка и агрегация ==== | ||
+ | |||
+ | <file bash> | ||
+ | awk ' | ||
+ | </ | ||
+ | |||
+ | Этот пример подсчитывает, | ||
+ | ===== Парсинг файлов с использованием AWK ===== | ||
+ | Самая частая операция, | ||
+ | |||
+ | По сути awk - это небольшой язык программирования для обработки текстов. Команда его запуска выглядит так: | ||
+ | < | ||
+ | $ awk options program file | ||
+ | </ | ||
+ | Где options - это опции, передаваемые awk, program - скрипт, | ||
+ | Основными опциями являются: | ||
+ | * -F fs — позволяет указать символ-разделитель для полей в записи (в каждой строке); | ||
+ | * -f file — указывает имя файла, из которого нужно прочесть awk-скрипт; | ||
+ | * -v var=value — объявляет переменную, | ||
+ | Создадим простейший awk скрипт, | ||
+ | <file bash> | ||
+ | $ cat /etc/passwd | awk -F ':' | ||
+ | root | ||
+ | daemon | ||
+ | bin | ||
+ | sys | ||
+ | sync | ||
+ | games | ||
+ | man | ||
+ | </ | ||
+ | |||
+ | С помощью команды cat мы выводим файл на экран и отправляем весь вывод на вход команде awk, которой указываем, | ||
+ | В awk можно писать несколько команд, | ||
+ | < | ||
+ | $ cat /etc/passwd | awk -F ':' | ||
+ | </ | ||
+ | Блок, указанный в фигурных скобках, | ||
+ | Давайте напишем простой скрипт, | ||
+ | < | ||
+ | $ cat /etc/passwd | awk 'BEGIN {a = 0} {a=a+1} END {print a}' | ||
+ | 26 | ||
+ | </ | ||
+ | Как вы уже увидели - блоки BEGIN{} и END{} выполнились только один раз. А вот блок {} выполнился 26 раз - по количеству строк в файле. Давайте рассмотрим еще один пример - просуммируем все uid в / | ||
+ | < | ||
+ | $ cat /etc/passwd | awk -F ':' | ||
+ | 67508 | ||
+ | </ | ||
+ | Мы разбиваем каждую строку /etc/passwd по символу ':', | ||
+ | |||
+ | Помимо простых операций, | ||
+ | |||
+ | |||
+ | <panel type=" | ||
+ | * [[RegExp]] | ||
+ | * [[sed]] | ||
+ | </ |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга