Perl:从文件输入到排序文件输出
我需要有关perl代码的帮助。我需要能够阅读一个文件,每行一个字,至少50行。我有一个代码来打印文件中的每一行,但如何将这些项目排序,然后输出到新文件中Perl:从文件输入到排序文件输出,perl,sorting,Perl,Sorting,我需要有关perl代码的帮助。我需要能够阅读一个文件,每行一个字,至少50行。我有一个代码来打印文件中的每一行,但如何将这些项目排序,然后输出到新文件中 while(<>){ chomp; print "$_ :is in the file"; } while(){ 咀嚼; 打印“$\:在文件中”; } 我正在努力弄清楚如何接收一个文件,然后(我想他们会逐行解析文件)将其输出到另一个文件。perl-we'print sort'input.txt>output.txt perl -
while(<>){
chomp;
print "$_ :is in the file";
}
while(){
咀嚼;
打印“$\:在文件中”;
}
我正在努力弄清楚如何接收一个文件,然后(我想他们会逐行解析文件)将其输出到另一个文件。perl-we'print sort'input.txt>output.txt
perl -we 'print sort <>' input.txt > output.txt
细分:
- 当我们使用菱形运算符时,将打开文件
进行读取input.txt
- 列表上下文中的
将文件中的所有行返回到排序
按字母顺序对行进行排序,并将列表返回到sort
print
打印已排序的列表print
- shell将
命令的输出重定向到文件perl
output.txt
perl -e '$, = "\n"; print sort map { chomp; $_ } <>' input.txt > output.txt
@array=
获取所有行。它们、输出文件和离开。我们也在谈论:打开(新的_文件);foreach$line(@array){print“$line”}close(new_文件)不确定open是否正确,如果您想阅读,这些是指向文档的链接。打印数组时不必循环——print将列表作为参数:print@array
。因此,如果我从命令行传入一个文件,我将如何处理input.txt>output.txt(>output.txt),与我的答案完全相同。当然,您只需要输入自己的文件名。如果文件不以换行符结尾,这将产生不正确的输出。@JonPurdy现在我明白您为什么选择换行了=PWhy firstchomp
然后添加换行?@TLP:文件中的最后一行可能没有换行符,在这种情况下,如果我们不删除并重新添加换行符,它将与下一个更高的值打印在同一行。@TLP:对不起,但我确实单独编写了答案。只有这么多的方法可以完成这么小的任务,所以必然会有很多重叠。就堆栈交换的游戏元素而言,从其他答案中分配和改进信息是一个很好的策略,我只是碰巧没有在这里使用它P@Pavel:这很奇怪,除非您使用binmode
,否则它应该与CRLF行结尾一起使用(因为文件句柄应该使用:CRLF
自动打开)。这种情况下的一个解决方法是设置local$/=“\r\n”
。单引号在windows上不起作用,因为单引号在windows上的处理方式不同。
#!/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;