Чтение файлов: cat, head, tail, less, wc
Инженер данных часто смотрит файлы прямо в терминале. Это быстрее, чем открывать Excel. И это работает на сервере, где Excel нет.
cat — весь файл
Заголовок раздела «cat — весь файл»cat data/customers.csvcat печатает файл целиком. Хорош для маленьких файлов. Файл на миллион строк лучше так не открывать: экран будет прокручиваться очень долго. Остановить — Ctrl + C.
head и tail — начало и конец
Заголовок раздела «head и tail — начало и конец»head data/events.csv # первые 10 строкhead -n 3 data/events.csv # первые 3 строкиtail data/events.csv # последние 10 строкtail -n 1 data/events.csv # последняя строкаtail -n +2 data/events.csv # всё, начиная со 2-й строки (без заголовка)head — первое, что делают с новым CSV. Видно столбцы, разделитель и формат данных.
tail -f — лог в реальном времени
Заголовок раздела «tail -f — лог в реальном времени»tail -f logs/pipeline.logtail -f (follow) показывает новые строки, как только они появляются в файле. Так смотрят лог работающего пайплайна. Выйти — Ctrl + C.
less — листать большой файл
Заголовок раздела «less — листать большой файл»less data/events.csvless открывает файл постранично и не грузит его в память целиком. Работает даже с файлами на гигабайты.
| Клавиша | Действие |
|---|---|
Пробел / b | Страница вперёд / назад |
g / G | В начало / в конец файла |
/текст | Найти текст. n — следующее совпадение |
q | Выйти |
wc — посчитать строки
Заголовок раздела «wc — посчитать строки»wc -l data/events.csv10001 data/events.csvwc -l считает строки. В CSV первая строка — заголовок, поэтому строк с данными на одну меньше: 10 000.
Практика
Заголовок раздела «Практика»Все задания — в папке ~/cli-practice.
Задание 1
Заголовок раздела «Задание 1»Посмотрите первые 3 строки файла клиентов.
Проверка:
customer_id,name,country1,Ivan Petrov,Russia2,Anna Smirnova,RussiaРешение
head -n 3 data/customers.csvЗадание 2
Заголовок раздела «Задание 2»Найдите последний заказ марта — последнюю строку файла data/sales_2024-03.csv.
Проверка: 1075,2024-03-28,10,68.74,completed.
Решение
tail -n 1 data/sales_2024-03.csvЗадание 3
Заголовок раздела «Задание 3»Сколько заказов в январе? Посчитайте строки в data/sales_2024-01.csv без заголовка.
Проверка: 25 заказов (в файле 26 строк).
Решение
wc -l data/sales_2024-01.csvОтвет 26, минус строка заголовка — 25. Можно сразу без заголовка:
tail -n +2 data/sales_2024-01.csv | wc -lЗнак | передаёт вывод одной команды в другую. Подробнее — в уроке grep и конвейеры.
Задание 4
Заголовок раздела «Задание 4»Откройте data/events.csv в less. Найдите первое событие purchase. Потом перейдите в конец файла и посмотрите время последнего события.
Проверка: первая покупка — строка 7,344,purchase,2024-03-01 00:28:39. Последнее событие — 10000, его время 2024-03-25 19:26:03.
Решение
less data/events.csvВнутри less: напишите /purchase и нажмите Enter. Потом нажмите G. Выйти — q.
Задание 5
Заголовок раздела «Задание 5»Сколько строк во всех трёх файлах продаж вместе? wc принимает несколько файлов сразу.
Проверка: в последней строке 78 total. Это 75 заказов и 3 заголовка.
Решение
wc -l data/sales_2024-01.csv data/sales_2024-02.csv data/sales_2024-03.csvВ следующем уроке научимся писать это короче: wc -l data/sales_*.csv.
Дальше: Поиск файлов.