Bash
Разделение файлов
Поиск…
Вступление
Иногда полезно разбить файл на несколько отдельных файлов. Если у вас большие файлы, неплохо было бы разбить его на мелкие куски
Разделить файл
Запуск команды split без каких-либо параметров разбивает файл на 1 или более отдельных файлов, содержащих до 1000 строк каждый.
split file
Это будет создавать файлы с именем xaa
, xab
, xac
и т.д., каждый из которых содержит до 1000 строк. Как вы можете видеть, все они имеют префикс с буквой x
по умолчанию. Если исходный файл был меньше 1000 строк, будет создан только один такой файл.
Чтобы изменить префикс, добавьте нужный префикс в конец командной строки
split file customprefix
Теперь будут созданы файлы с именем customprefixaa
, customprefixab
, customprefixac
и т. Д.
Чтобы указать количество строк для вывода на файл, используйте параметр -l
. Ниже будет разбит файл на 5000 строк
split -l5000 file
ИЛИ ЖЕ
split --lines=5000 file
Кроме того, вы можете указать максимальное количество байтов вместо строк. Это делается с использованием опций -b
или --bytes
. Например, чтобы разрешить максимум 1 МБ
split --bytes=1MB file
Мы можем использовать sed с параметром w, чтобы разделить файл на несколько файлов. Файлы можно разделить, указав адрес или шаблон строки.
Предположим, что у нас есть этот исходный файл, который мы хотели бы разделить:
cat -n sourcefile
1 На Нин Нанг Нонг
2 Куда идут коровы Бонг!
3 и обезьяны все говорят BOO!
4 Существует Nong Nang Ning
5 Где деревья идут в Пинг!
6 И чайный горшок jibber jabber joo.
7 На Нонг Нин Нанг
Команда для разделения файла по номеру строки:
sed '1,3w f1
> 4,7w f2' sourcefile
Это записывает строки1 в строку3 в файл f1 и line4 в строку7 в файл f2 из исходного файла.
cat -n f1
1 На Нин Нанг Нонг
2 Куда идут коровы Бонг!
3 и обезьяны все говорят BOO!
cat -n f2
1 Существует Nong Nang Ning
2 Где идут деревья Пинг!
3 И чайный горшок jibber jabber joo.
4 На Нонг Нин Нанг
Команда для разделения файла по контексту / шаблону:
sed '/Ning/w file1
> /Ping/w file2' sourcefile
Это разделяет исходный файл на file1 и file2. file1 содержит все строки, соответствующие Ning, file2 содержит строки, соответствующие Ping.
cat file1
О Нин Нанг Нонг
Там Нонг Нанг Нин
На Нонг Нин Нанг
cat file2
Где деревья идут в Пинг!