将第一行x行的csv文件读入新的outfile?

时间:2013-11-28 21:37:28

标签: shell csv terminal

如何通过终端将csv文件的前x行复制到新的csv文件中?

2 个答案:

答案 0 :(得分:40)

(您将使用Linux终端/控制台)

使用head -n NUMBEROFLINES file.csv获取第一行NUMBEROFLINES行。使用shell重定向(>)将其写入另一个文件,如下所示:

head -n NUMBEROFLINES file.csv > mynewfile.csv

请注意,这将完全重新创建mynewfile.csv如果它在现在永久删除之前有任何内容( - ish)。

如果您碰巧想要相反(最后 x行),请使用tail

两个工具都附带了人工和信息页面(man headinfo 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