Разделить файл .txt на основе содержимого - PullRequest
3 голосов
/ 17 декабря 2011

У меня есть огромный *.txt файл следующим образом:

~~~~~~~~ small file content 1 <br>
~~~~~~~~ small file content 2 <br>
...
~~~~~~~~ small file content n <br>

Как мне разбить это на n файлов, предпочтительно через bash?

Ответы [ 3 ]

13 голосов
/ 17 декабря 2011

Использование csplit

$ csplit --help
Usage: csplit [OPTION]... FILE PATTERN...
Output pieces of FILE separated by PATTERN(s) to files `xx00', `xx01', ...,
and output byte counts of each piece to standard output.
0 голосов
/ 18 декабря 2011

Если содержимое вашего огромного текстового файла находится в каждой строке (т. Е. Каждая строка содержит содержимое, которое вы хотели бы разделить, то это должно работать) -

Однострочная:

awk '{print >("SMALL_BATCH_OF_FILES_" NR)}' BIG_FILE

Тест:

[jaypal:~/Temp] cat BIG_FILE
~~~~~~~~ small file content 1
~~~~~~~~ small file content 2
~~~~~~~~ small file content 3
~~~~~~~~ small file content 4
~~~~~~~~ small file content n-1
~~~~~~~~ small file content n

[jaypal:~/Temp] awk '{print >("SMALL_BATCH_OF_FILES_" NR)}' BIG_FILE

[jaypal:~/Temp] ls -lrt SMALL_BATCH_OF_FILES_*
-rw-r--r--  1 jaypalsingh  staff  30 17 Dec 14:19 SMALL_BATCH_OF_FILES_6
-rw-r--r--  1 jaypalsingh  staff  32 17 Dec 14:19 SMALL_BATCH_OF_FILES_5
-rw-r--r--  1 jaypalsingh  staff  30 17 Dec 14:19 SMALL_BATCH_OF_FILES_4
-rw-r--r--  1 jaypalsingh  staff  30 17 Dec 14:19 SMALL_BATCH_OF_FILES_3
-rw-r--r--  1 jaypalsingh  staff  30 17 Dec 14:19 SMALL_BATCH_OF_FILES_2
-rw-r--r--  1 jaypalsingh  staff  30 17 Dec 14:19 SMALL_BATCH_OF_FILES_1

[jaypal:~/Temp] cat SMALL_BATCH_OF_FILES_1 
~~~~~~~~ small file content 1
[jaypal:~/Temp] cat SMALL_BATCH_OF_FILES_2 
~~~~~~~~ small file content 2
[jaypal:~/Temp] cat SMALL_BATCH_OF_FILES_6
~~~~~~~~ small file content n
0 голосов
/ 17 декабря 2011

С помощью awk:

awk 'BEGIN {c=1} NR % 10000 == 0 { c++ } { print $0 > ("splitfile_" c) }' LARGEFILE

.Он устанавливает счетчик, который будет увеличиваться на каждые 10000 строк.Затем записывает строки в файл (ы) «сплитфайл».

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...