Как написать Perl-скрипт для преобразования файла во все прописные буквы?

Как я могу написать сценарий Perl для преобразования текстового файла во все буквы верхнего регистра?


person salvationishere    schedule 29.04.2011    source источник


Ответы (3)


perl -ne "print uc" < input.txt

-n заключает ваш сценарий командной строки (который предоставляется -e) в цикл while. uc возвращает ЗАГЛАВНУЮ версию переменной по умолчанию $_, а что делает print, вы сами знаете. ;-)

-p похож на -n, но вдобавок он выполняет print. Опять же, воздействуя на переменную по умолчанию $_.

Чтобы сохранить это в файле сценария:

#!perl -n
print uc;

Назовите это так:

perl uc.pl < in.txt > out.txt
person Lumi    schedule 29.04.2011
comment
добавьте -C для файлов utf-8, например, echo aßbc | perl -C -ne'print uc' -> ASSBC. - person jfs; 29.04.2011
comment
Спасибо, Майкл! Это сработало для меня. Информация была полезной, и я изменил ее для вывода в файл, что было просто. Для других новичков вы должны поместить каталог и имя файла в двойные кавычки, если он не находится в текущем каталоге. - person salvationishere; 29.04.2011
comment
Еще один дополнительный вопрос... Как я могу написать это и сохранить в файле Perl? Так что я просто даю аргументы входного файла и выходного файла? - person salvationishere; 29.04.2011
comment
#!perl -n print uc; В две строки! Затем назовите его так: perl uc.pl ‹ in.txt › out.txt - person Lumi; 29.04.2011
comment
Я пробовал это, но это ничего не сделало. Как добавить информацию о вводе/выводе в командную строку при запуске этого Perl-скрипта? Кроме того, этот скрипт выглядит недостаточно длинным - person salvationishere; 29.04.2011

perl -pe '$_ = uc($_)' input.txt > output.txt

Но тогда вам даже не нужен Perl, если вы используете Linux (или *nix). Некоторые другие способы:

авк:

awk '{напечатать верхнюю часть ($0)}' input.txt > output.txt

tr:

tr '[:lower:]' '[:upper:]' ‹ input.txt > output.txt

person Akhthar Parvez    schedule 29.04.2011
comment
Спасибо за информацию. Хотя я не пользуюсь линуксом. - person salvationishere; 29.04.2011
comment
Хорошо, нп. Несмотря на то, что Perl очень полезен для пользователей Linux, я всегда думал, что он больше подходит для пользователей Windows; просто из-за того, что Linux настолько богат инструментами, что одну задачу можно выполнить с помощью многих его стандартных утилит. - person Akhthar Parvez; 29.04.2011

person    schedule
comment
Спасибо, Мэтью. Я попробовал это, но я немного изменил его с информацией о каталоге. Однако это дает мне ошибку: не удается найти терминатор строки ' нигде до EOF в -e строке 1 - person salvationishere; 29.04.2011