cut, sort, uniq, wc
Тема дорожной карты · Linux & Unix Fundamentals
cut, sort, uniq, и wc — это четыре мощных инструмента командной строки, которые являются основой быстрой обработки данных в Unix-подобных системах. Эти команды позволяют эффективно анализировать и манипулировать текстовыми данными, что делает их незаменимыми для системных администраторов и разработчиков.
Как это работает
cut используется для выборки определенных полей из текстовых строк, что позволяет извлечь нужные данные из лог-файлов или конфигурационных файлов. Например, команда cut -d: -f1,7 /etc/passwd выделяет первую и седьмую колонки из файла /etc/passwd.
sort сортирует строки или записи на основе одного или нескольких полей. Команда sort -k2 -n сортирует строки по второму полю как числовое значение, а sort -u убирает дублирующиеся строки, обеспечивая уникальность данных. Команда sort -t, позволяет использовать пользовательский разделитель для сортировки.
uniq схлопывает соседние дубликаты строк, что делает его полезным для анализа данных. Команда uniq -c добавляет счётчик к каждому уникально схлопнутому значению, что позволяет быстро определить частоту появления каждого значения. Это идеально для анализа топ-10 значений или других статистических данных.
wc (word count) используется для подсчёта строк, слов или байтов в текстовом файле. Команда wc -l считает количество строк, а wc -c — количество байтов.
Когда применять
Эти команды особенно полезны для быстрого анализа лог-файлов, обработки CSV-файлов, создания быстрых статистических отчётов, и выполнения мелких трансформаций данных. Например, команда cat access.log | grep 404 | awk '{print $7}' | sort | uniq -c | sort -rn | head позволяет быстро определить, какие URL чаще всего возвращают HTTP-код 404.
Типичные ошибки
Команды cut, sort, uniq, и wc могут быть использованы неправильно, что приводит к ошибочным результатам. Например, использование жадного регулярного выражения (.*) может привести к нежелательным совпадениям. Также важно учитывать влияние локали на сортировку, так как это может привести к неожиданным результатам. В скриптах следует использовать LC_ALL=C для обеспечения сортировки в порядке байтов.