我有以下代码片段,我试图用来读取一些文件,这些文件可能会重复两次或多次。这个脚本的目标是只写独特的行(没有重复),但由于某种原因,它似乎没有检测到相等。有什么想法吗?
$handle = @fopen("Old.csv", "r");
$new = @fopen("New.csv", "w");
$last_line = null;
if ($handle && $new) {
while (($buffer = fgets($handle, 4096)) !== false) {
if( $last_line != $buffer ) fwrite( $new, $buffer );
$last_line = $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
fclose($new);
}
以下是“Old.csv”
的示例 apple
apple
orange
grapes
grapes
grapes
“New.csv”应为:
apple
orange
grapes
但它最终成为“Old.csv”的精确副本。
答案 0 :(得分:1)
在命令提示符下尝试cat old.csv | sort -u > new.csv
要快得多。
答案 1 :(得分:0)
感谢大家的回复。我无意中遗漏了一条线索,就是我在Mac上。我重新保存了CSV以使用Windows格式并重新运行我的脚本,一切都很顺利。我猜这是行结尾。无论如何,底线是剧本的作用。