← Назад к вопросам

Как отфильтровать данные в консоли Linux

2.0 Middle🔥 111 комментариев
#Инструменты тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Фильтрация данных в консоли Linux: основные инструменты и примеры

Фильтрация данных в Linux — одна из ключевых задач для QA Engineer при анализе логов, результатов тестирования или конфигурационных файлов. Вот основные инструменты и подходы.

Основные утилиты для фильтрации

grep — базовый поиск по шаблону

Самый распространённый инструмент для поиска строк, содержащих определённое слово или регулярное выражение.

# Поиск слова "error" в файле
grep "error" application.log

# Поиск с игнорированием регистра
grep -i "failed" test_results.txt

# Поиск с выводом номера строки
grep -n "exception" server.log

# Инвертированный поиск (строки, НЕ содержащие паттерн)
grep -v "debug" application.log

# Рекурсивный поиск в директориях
grep -r "deprecated" /var/log/

# Использование регулярных выражений
grep "^2024-" access.log  # строки, начинающиеся с "2024-"

awk — мощная обработка структурированных данных

Идеально подходит для работы с колоночными данными, например, CSV или логами с предсказуемым форматом.

# Вывод первой колонки файла
awk '{print $1}' data.csv

# Фильтрация по значению в колонке
awk '$3 > 100 {print $1, $2}' metrics.txt

# Использование разделителя (не пробел)
awk -F',' '{print $2}' users.csv  # CSV-файл

# Суммирование значений колонки
awk '{sum+=$3} END {print "Total:", sum}' sales.txt

# Комбинирование условий
awk '$2 == "ERROR" && $4 ~ /timeout/ {print $0}' app.log

sed — потоковый редактор для замены и фильтрации

Полезен не только для замены, но и для выбора определённых строк.

# Вывод строк с 10 по 20
sed -n '10,20p' large_file.log

# Удаление строк с определённым содержимым
sed '/debug/d' application.log

# Вывод только строк, соответствующих регулярному выражению
sed -n '/^ERROR/p' server.log

Комбинирование утилит через конвейеры (pipes)

Реальная мощь Linux-консоли раскрывается при объединении утилит:

# Поиск ошибок, подсчёт уникальных типов, сортировка по частоте
grep "ERROR" application.log | awk '{print $4}' | sort | uniq -c | sort -nr

# Анализ логов за последний час с группировкой
grep "$(date -d '1 hour ago' '+%H:%M')" access.log | awk '{print $7}' | sort | uniq -c

# Мониторинг процессов с фильтрацией
ps aux | grep -v grep | grep "python" | awk '{print $2, $11}'

Специализированные инструменты

cut — извлечение частей строк

# Извлечение первого и третьего поля (разделитель - пробел)
cut -d' ' -f1,3 data.txt

# Извлечение символов с 5 по 10
cut -c5-10 file.txt

sort и uniq — сортировка и уникализация

# Сортировка и удаление дубликатов
sort duplicates.txt | uniq

# Подсчёт частоты встречаемости
sort items.txt | uniq -c | sort -nr

head и tail — работа с началом и концом файла

# Первые 10 строк
head -n 10 large_file.log

# Последние 20 строк + мониторинг новых записей
tail -n 20 -f realtime.log

Практические примеры для QA Engineer

  1. Анализ логов тестов:
# Извлечение только упавших тестов
grep -A2 -B2 "FAILED" test_run.log | grep "Test name:"

# Подсчёт успешных/неуспешных тестов
grep -c "PASSED" test_results.txt
grep -c "FAILED" test_results.txt
  1. Проверка конфигурационных файлов:
# Извлечение всех настроек, исключая закомментированные строки
grep -v "^#" config.conf | grep -v "^$"

# Проверка значений параметров
grep "timeout" config.conf | awk -F'=' '{print $2}'
  1. Мониторинг системных ресурсов во время нагрузочного тестирования:
# Отслеживание потребления памяти процессом
ps aux | grep "application" | awk '{print $4}' | tail -n 10

Продвинутые техники

  1. Использование регулярных выражений:
# Поиск email-адресов в логах
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" user_activity.log

# Поиск IP-адресов
grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" access.log
  1. Сохрание результатов фильтрации:
# Фильтрация с сохранением в файл
grep "CRITICAL" system.log > critical_errors.txt

# Дополнение файла с результатами
grep "WARNING" system.log >> all_warnings.txt

Ключевые рекомендации для QA:

  • Всегда проверяйте синтаксис регулярных выражений на небольших наборах данных
  • Комбинируйте утилиты для решения сложных задач фильтрации
  • Сохраняйте сложные команды в скрипты для повторного использования
  • Используйте man [утилита] для изучения всех возможностей инструментов

Фильтрация данных в Linux — фундаментальный навык, который значительно ускоряет анализ результатов тестирования, расследование дефектов и мониторинг систем. Освоив эти инструменты, QA Engineer может эффективно работать с любыми объёмами данных без необходимости писать сложные парсеры.

Как отфильтровать данные в консоли Linux | PrepBro