Perl: файл в отсортированный файл - PullRequest
2 голосов
/ 26 октября 2011

Мне нужна помощь с моим кодом Perl. Мне нужно иметь возможность читать в файле с одним словом в каждой строке и не менее 50 строк. У меня есть код для печати каждой строки из файла, но как мне взять эти элементы, отсортировать их и затем поместить в новый файл.

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

Я изо всех сил пытаюсь выяснить, как получить файл и (я думаю, <> анализирует файлы построчно), поместить его в другой файл.

Ответы [ 2 ]

7 голосов
/ 26 октября 2011

Для более функционального подхода, как однострочный:

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

Это print s a sort ed версия map ping каждая строка через 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;
6 голосов
/ 26 октября 2011
perl -we 'print sort <>' input.txt > output.txt

Разбивка:

  • файл input.txt открывается для чтения, когда мы используем оператор ромба <>
  • <> в контексте списка возвращает всестроки в файле на sort
  • sort сортирует строки по алфавиту и возвращает список на print
  • print печатает отсортированный список
  • Оболочкаперенаправляет вывод команды perl в файл output.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...