Perl:将文件输入到已排序的文件中

时间:2011-10-26 01:07:58

标签: perl sorting

我的perl代码需要帮助。我需要能够在每行中读取一个单词且至少50行的文件。我有一个代码来打印文件中的每一行,但是我如何对这些项进行排序然后将它们放到一个新文件中。

while(<>){
chomp;
print "$_ :is in the file";
}

我正在努力弄清楚如何接收文件和(我认为&lt;&gt;逐行解析文件)把它放到另一个文件中。

2 个答案:

答案 0 :(得分:7)

对于更具功能性的方法,作为单线:

perl -e '$, = "\n"; print sort map { chomp; $_ } <>' input.txt > output.txt

prints sorted版本的mapping每行chomp,以换行符分隔($,

作为写入预定文件的独立脚本:

#!/usr/bin/env perl -w

$, = "\n";

open(my $output, ">", "output.txt")
  or die "Cannot open output.txt: $!\n";

print $output sort map { chomp; $_ } <>;

close $output;

答案 1 :(得分:6)

perl -we 'print sort <>' input.txt > output.txt

故障:

  • 当我们使用菱形运算符时,文件input.txt会被打开以供阅读 <>
  • 列表上下文中的
  • <>会将文件中的所有行返回到sort
  • sort按字母顺序对行进行排序,并将列表返回print
  • print打印已排序的列表
  • shell将perl命令的输出重定向到文件 output.txt