我想将一个巨大文件的前10行打印到新文件中。使用此oneliner,我可以在显示器上打印线条:
> perl -ne "print if $. < 10" in.csv
我试过了:
> perl -ne "print if $. < 10" in.csv >out.txt
但这只会创建out.txt文件,而不会将第一行写入其中。这段代码有什么问题?
谢谢你的帮助
Windows 7 / Strawberry Perl
UPDATE1:
如果我使用以下方式将打印结果发送到监视器上:
> perl -ne "print if $. <= 10" in.csv
程序没有停止,也就是说,前10行是在显示器上输出的,但它不会以:
结束>
我必须使用Ctrl + c停止程序。
使用像ikegami这样的简单csv-File(只是一些行),在线工作。我假设csv文件中有一些内容。
更新2:
最初的在线人员:
> perl -ne "print if $. <= 10" in.csv >out.txt
的工作原理。我得等几秒钟。 csv文件大2 GB。在线人员:
> perl -pe "exit if $. > 10" in.csv >out.txt
立即给出结果。结论:第一个在线人员遍历所有行,第二个出口经过10行。
抱歉,我为这个问题烦你。我吸取了教训:使用合适的在线人员或等待几秒钟。
答案 0 :(得分:1)
哼声?这是正确的(< 10
除外应为<= 10
):
>type in.csv
a
b
c
d
e
f
g
h
i
j
k
l
m
n
...
z
>perl -ne "print if $. <= 10" in.csv >out.txt
>type out.txt
a
b
c
d
e
f
g
h
i
j
>
当没有打印而不是打印整个文件时,更快的解决方案将退出。
perl -pe"last if $. > 10" in.csv >out.txt