Если у вас есть громоздкий текстовый файл, который вы пытаетесь обработать, разделение его на разделы иногда может помочь время обработки, особенно если мы собираемся импортировать файл в электронную таблицу. Или вы можете просто получить определенный набор строк из файла.
Введите split, wc, tail, cat и grep. (не забудьте sed и awk). Linux содержит богатый набор утилит для работы с текстовыми файлами в командной строке. Для нашей задачи сегодня мы будем использовать split и wc.
Сначала мы посмотрим на наш файл журнала ….
> ls -l -rw-r–r– 1 thegeek ggroup 42046520 2006-09-19 11:42 access.log
Мы видим, что размер файла составляет 42 МБ. Это немного … но сколько строк мы имеем в виду? Если бы мы хотели импортировать это в Excel, нам нужно было бы держать его менее 65 тыс. Строк.
Давайте проверим количество строк в файле с помощью утилиты wc, которая означает «количество слов».
> wc -l access.log 146330 access.log
Мы преодолели наш предел. Нам нужно разбить это на 3 сегмента. Для этого мы будем использовать утилиту split.
> split -l 60000 access.log > ls -l
total 79124 -rw-rw-r– 1 thegeek ggroup 40465200 2006-09-19 12:00 access.log -rw-rw-r– 1 thegeek ggroup 16598163 2006-09-19 12:05 xaa -rw-rw-r– 1 thegeek ggroup 16596545 2006-09-19 12:05 xab -rw-rw-r– 1 thegeek ggroup 7270492 2006-09-19 12:05 xac
Теперь мы разделили наши текстовые файлы на 3 отдельных файла, каждый из которых содержит менее 60000 строк, что показалось хорошим выбором. Последний файл содержит оставшуюся сумму. Если вы собираетесь сократить этот конкретный файл пополам, вы бы сделали это:
> split -l 73165 access.log
И это все, что нужно.