我有下面的代码片段,我试图用它来读取一个文件,可以有一些行重复两次或更多次。这个脚本的目标是只写唯一的行(没有重复的行),但由于某种原因,它似乎没有检测到相等。任何想法吗?
$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"的精确副本。
在命令提示符下尝试cat old.csv | sort -u > new.csv
,它要快得多。
感谢大家的回复。我无意中漏掉了一个线索,那就是我是在Mac电脑上。我重新保存了CSV以使用Windows格式,并重新运行了我的脚本,一切都很好。我猜是台词结尾的问题。无论如何,底线是脚本工作。