Скажем, у вас есть следующие входные данные:
$ for i in a b c ; do echo "$i is $i" > $i; done
$ cat a b c
a is a
b is b
c is c
Все знают, что заглавные буквы намного лучше!
perl -i.bak -pe '$_ = uc' a b c
Так что теперь
$ cat a b c
A IS A
B IS B
C IS C
Но нам бы очень хотелось сделать это с помощью команды upcase
, и это легко сделать!
#! /usr/bin/perl -pi.bak
$_ = uc
Посмотри на работу:
$ for i in a b c ; do echo "$i is $i" > $i; done
$ cat a b c
a is a
b is b
c is c
$ ./upcase a b c
$ !cat
cat a b c
A IS A
B IS B
C IS C
Дополнительные советы от ответа на аналогичный вопрос :
Опция -e
представляет исполняемый код на Perl, который можно рассматривать как сценарий в командной строке, поэтому отбросьте его и вставьте код в тело. Оставьте -p
в строке Шебанга (#!
).
В общем, безопаснее всего придерживаться не более одного «набора» опций в линии Шебанга. Если вам нужно больше, вы всегда можете выбросить их эквиваленты в блоке BEGIN {}
.
Не забудьте включить бит выполнения!
chmod +x script-name
Поскольку вы не указали фактическую строку, которую хотите конвертировать, мне пришлось дать широкий общий ответ. Если вы измените свой вопрос, чтобы он соответствовал тому, что вы хотите сделать, мы можем дать более полезные ответы.