如何通过终端将csv
文件的前x行复制到新的csv
文件中?
答案 0 :(得分:40)
(您将使用Linux终端/控制台)
使用head -n NUMBEROFLINES file.csv
获取第一行NUMBEROFLINES
行。使用shell重定向(>
)将其写入另一个文件,如下所示:
head -n NUMBEROFLINES file.csv > mynewfile.csv
请注意,这将完全重新创建mynewfile.csv
,如果它在现在永久删除之前有任何内容( - ish)。
如果您碰巧想要相反(最后 x行),请使用tail
。
两个工具都附带了人工和信息页面(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
并附加(>>
,>
会重新创建/删除文件!)data.csv
的第一行和最后10行/tmp/first_and_last.csv
的“结束”。
Mac OS: 根据互联网(tm),这些命令也可用于(基于Unix的)Mac OS(你必须通过Finder启动终端)。
答案 1 :(得分:0)
如果您的CSV包含包含换行符分隔符的“行”,则可能不适合您。在报价中。一个简短的PHP脚本,可以解决这个问题,所以你会得到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