Извлечение n строк текста из большого файла CSV - PullRequest
1 голос
/ 12 августа 2010

У меня есть файл CSV (foo.csv) с 200 000 строк. Мне нужно разбить его на четыре файла (foo1.csv, foo2.csv ... и т. Д.) По 50000 строк в каждом.

Я уже пробовал простой ctrl-v / -c, используя текстовые редакторы GUI, но мой компьютер зависает.

Какие команды Unix я могу использовать для выполнения этой задачи?

Ответы [ 6 ]

4 голосов
/ 12 августа 2010

У меня нет терминала, чтобы попробовать его, но он должен быть просто split -d -l 50000 foo.csv.

Надеемся, что наименование не очень важно, потому что с опцией -d выходные файлы будут иметь имя foo.csv00 .. foo.csv03.Вы можете добавить опцию -a 1, чтобы суффиксы были 0-3, но не существует простого способа получить суффикс, который будет вставлен в середину имени файла.

2 голосов
/ 12 августа 2010
sed -n 2000,4000p somefile.txt

печатает от строк 2000 до 4000 на стандартный вывод.

1 голос
/ 12 августа 2010

split -l50000 foo.csv

1 голос
/ 12 августа 2010

вы должны использовать head и tail.

head -n 50000 myfile > part1.csv
head -n 100000 myfile | tail -n 50000 > part2.csv 
head -n 150000 myfile | tail -n 50000 > part3.csv 

и т.д ...

Иначе, но без контроля над именами файлов, вы можете использовать команду unix split.

0 голосов
/ 12 августа 2010

Я написал этот небольшой сценарий оболочки для этой темы очень похож на ваш.

Этот сценарий оболочки + awk прекрасно работает для меня:

#!/bin/bash
awk -v initial_line=$1 -v end_line=$2 '{
    if (NR >= initial_line && NR <= end_line) 
    print $0
}' $3

Используется сэтот пример файла (file.txt):

one
two
three
four
five
six

Команда (она будет извлекать из второй-четвертой строки в файле):

edu@debian5:~$./script.sh 2 4 file.txt

Вывод этой команды:

two
three
four

Конечно, вы можете улучшить его, например, проверив, что все значения аргументов являются ожидаемыми: -)

0 голосов
/ 12 августа 2010

Вы можете использовать sed

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