【发布时间】:2015-08-19 09:46:12
【问题描述】:
我想将一个大文件的前 10 行打印到一个新文件中。有了这个 oneliner,我可以在显示器上打印线条:
> perl -ne "print if $. < 10" in.csv
我试过这个:
> perl -ne "print if $. < 10" in.csv >out.txt
但这只会创建文件 out.txt 而不会将第一行写入其中。这段代码有什么问题?
感谢您的帮助
Windows 7 / 草莓 Perl
更新1:
如果我使用以下命令在监视器上发送打印结果:
> perl -ne "print if $. <= 10" in.csv
程序没有停止,即前十行在监视器上输出但它没有以:
>
我必须使用 Ctrl+c 来停止程序。
使用简单的 csv 文件,如 ikegami(只是一些行),在线工作。我认为 csv 文件中有一些内容。
更新 2:
原网友:
> perl -ne "print if $. <= 10" in.csv >out.txt
有效。我得等几秒钟。 csv 文件大小为 2 GB。网友:
> perl -pe "exit if $. > 10" in.csv >out.txt
立即给出结果。结论:第一个上线者走完所有行,第二个10行后退出。
抱歉,这个问题打扰您了。我吸取了教训:使用合适的在线工具或多等几秒钟。
【问题讨论】:
-
这是一个 MSWin cmd.exe 问题,而不是 Perl 问题。
-
它在 win2k8r2 上对我有效。输出文件是否在初始创建后设置为只读?
-
@stevieb。不,可以写。我尝试了 ikegami 的示例,它有效。显然,它与原始 csv 文件有关。
-
致所有人:请参阅我在更新 2 中的回答。