Разделите текстовый файл пополам (или любой процент) в Ubuntu Linux
Если у вас есть громоздкий текстовый файл, который вы пытаетесь обработать, разбиение его на разделы иногда может помочь в обработке, особенно если мы собирались импортировать файл в электронную таблицу. Или вы можете просто извлечь определенный набор строк из файла.
Введите 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всего 79124
-rw-rw-r- 1 thegeek ggroup 40465200 2006-09-19 12:00 access.log
-rw-rw-r- 1 группа thegeek 16598163 2006-09-19 12:05 xaa
-rw-rw-r- 1 группа thegeek 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
И это все, что нужно сделать.