在程序和实际命令中执行系统(...)时的输出差异

时间:2013-12-11 10:30:38

标签: linux uniq

我有一个用C编写的程序,它创建一个带有字符行的输出文件。我的目的是计算此输出文件中唯一的字符行数(不包括“ABC”)。

我可以使用

通过Linux命令行手动完成
cat output/output.txt | grep -v "ABC" | sort | uniq -c > uniq_stats/stats.txt

我也把这个命令放到我的程序中,所以我不必手动完成。

memset(command, 0, 500);
sprintf(command, "cat %s | grep -v \"ABC\" | sort | uniq -c > uniq_stats/%s", out_filename, filename);
system(command);

out_filename是output / output.txt,filename是stats.txt

我希望特定的一行可以看到1351次。使用命令行的方法给出了正确的值。但是,系统(命令)方法只给出了1349次。另外,还有另一条线路使用系统(命令)方法不完整,即只打印出一部分字符串。

为什么我从2种方法得到不同的输出?我曾经只见过这个问题,因为我已经尝试了4或5个其他文件,这两种方法都给了我正确的结果。

0 个答案:

没有答案