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

jen*_*lee 2 sorting perl

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

while(<>){
chomp;
print "$_ :is in the file";
}
Run Code Online (Sandbox Code Playgroud)

我正在努力弄清楚如何接收文件和(我认为<>逐行解析文件)将其放入另一个文件.

Jon*_*rdy 7

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

perl -e '$, = "\n"; print sort map { chomp; $_ } <>' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

printš一个sort编辑的版本map每线通过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;
Run Code Online (Sandbox Code Playgroud)


TLP*_*TLP 6

perl -we 'print sort <>' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

分解:

  • input.txt当我们使用钻石操作符时,打开文件进行读取 <>
  • <> 在列表上下文中返回文件中的所有行 sort
  • sort 按字母顺序对行进行排序并将列表返回到 print
  • print 打印排序列表
  • shell将perl命令的输出重定向到文件 output.txt