Перейти к содержимому
TelegramGitHub

Чтение файлов: cat, head, tail, less, wc

Инженер данных часто смотрит файлы прямо в терминале. Это быстрее, чем открывать Excel. И это работает на сервере, где Excel нет.

Окно терминала
cat data/customers.csv

cat печатает файл целиком. Хорош для маленьких файлов. Файл на миллион строк лучше так не открывать: экран будет прокручиваться очень долго. Остановить — Ctrl + C.

Окно терминала
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 logs/pipeline.log

tail -f (follow) показывает новые строки, как только они появляются в файле. Так смотрят лог работающего пайплайна. Выйти — Ctrl + C.

Окно терминала
less data/events.csv

less открывает файл постранично и не грузит его в память целиком. Работает даже с файлами на гигабайты.

КлавишаДействие
Пробел / bСтраница вперёд / назад
g / GВ начало / в конец файла
/текстНайти текст. n — следующее совпадение
qВыйти
Окно терминала
wc -l data/events.csv
10001 data/events.csv

wc -l считает строки. В CSV первая строка — заголовок, поэтому строк с данными на одну меньше: 10 000.

Все задания — в папке ~/cli-practice.

Посмотрите первые 3 строки файла клиентов.

Проверка:

customer_id,name,country
1,Ivan Petrov,Russia
2,Anna Smirnova,Russia
Решение
Окно терминала
head -n 3 data/customers.csv

Найдите последний заказ марта — последнюю строку файла data/sales_2024-03.csv.

Проверка: 1075,2024-03-28,10,68.74,completed.

Решение
Окно терминала
tail -n 1 data/sales_2024-03.csv

Сколько заказов в январе? Посчитайте строки в 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 и конвейеры.

Откройте 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.

Сколько строк во всех трёх файлах продаж вместе? 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.

Дальше: Поиск файлов.