Как скопировать только первые строки x файла csv
в новый csv
файл через терминал?
Прочтите сначала x строк csv в новый outfile?
Ответ 1
Краткая
(Вы будете использовать терминал/консоль linux)
Используйте head -n NUMBEROFLINES file.csv
, чтобы получить первую строку NUMBEROFLINES
. Запишите его в другой файл, используя перенаправление оболочки (>
) следующим образом:
head -n NUMBEROFLINES file.csv > mynewfile.csv
Обратите внимание, что это полностью воссоздает mynewfile.csv
, если у него есть какой-либо контент, прежде чем он будет удален навсегда (-ish).
Если вам когда-либо понадобится противоположная ( последняя строка x), используйте tail
.
Оба инструмента поставляются с man и информационными страницами (man head
или info head
), однако man
), а флаг --help
(head --help
на самом деле показывает мне более или менее справочную страницу).
Полный пример
head -n 10 data.csv >> /tmp/first_and_last.csv # Note the ">>"
tail -n 10 data.csv >> /tmp/first_and_last.csv # Note the ">>"
Это откроет файл /tmp/first_and_last.csv
и приложит (>>
, >
будет воссоздавать/удалять файл!) первую и последнюю 10 строк data.csv в конце.
Ответ 2
Это может не сработать для вас, если ваш CSV содержит "строки", содержащие разделители строк, например. в цитатах. Короткий PHP Script, который бы разрешил эту проблему, поэтому вы получите 1500 "строк" / "наборов данных", каждая из которых может содержать несколько "строк файлов"
<?php
$input = fopen($argv[1], "r");
$output = fopen($argv[2], "w+");
$limit = $argv[3];
$counter = 0;
while($counter <= $limit) {
echo $counter;
$line = fgetcsv($input);
fputcsv($output, $line);
$counter++;
}
Для выполнения:
php -f scriptname.php input.csv output.csv 1500