我有一个文件。我想打印除最后一行以外的所有行。我们如何使用 Perl 代码来做到这一点?
这是行不通的:
cat file|perl -lane 'print if not eof()'
不好意思,这是行得通的。我没有仔细查看我的输出。
seq 1 6 | perl -lane 'print if not eof()'
1
2
3
4
5
最佳答案
如果需要在命令行上执行此操作,可以使用 shell 命令 head
。负数行将显示除最后 N 行以外的所有行。
head --lines=-1 filename
这是一个 GNU 扩展,不适用于 BSD head,例如 OS X 附带的 stock head。
对于Perl,您的代码基本正确,但没有必要涉及cat
。否则,您将读取该文件两次。您可以直接传递文件名。此外 -l
实际上什么也不做,从输入中剥离换行符并将其放回输出中。最后,不需要 -a
,因为这会浪费地将每一行拆分为未使用的 @F
。
perl -ne 'print if not eof' filename
关于Perl 一行打印除最后一行以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7296898/