Perl oneliner:将第一行打印到文件中

时间:2015-06-04 16:46:04

标签: windows perl shell cmd

我想将一个巨大文件的前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行。

抱歉,我为这个问题烦你。我吸取了教训:使用合适的在线人员或等待几秒钟。

1 个答案:

答案 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