Только root имеет права на выполнение скрипта, а ваш текущий пользователь — нет. Поскольку у вас есть доступ для чтения, вы можете обойти проблему, запустив bash./s300928290.sh
.
Чтобы справиться со вторым примером, предложите подход, основанный на правилах. Рассмотрим следующий Perl-скрипт(camelcaseproc
):
#!/usr/bin/perl -CSDA -p
s{ \W+ # break on non-word
| _ # break on "_"
| (?<=\p{Ll})(?=\p{Lu}) #...aB... →...a-B...
| (?<=\p{Lu})(?=\p{Lu}\p{Ll}) #..ABCd.. →...AB-Cd.
| (?<=I)(?=am) # exceptions rules
}{-}xg #
x
позволяет добавлять комментарии в регулярные выражения После обычного chmod +x camelcaseproc
мы можем использовать его как:
$ camelcaseproc <<< "IamTestECHO TEST PickFoo BARFull"
I-am-Test-ECHO-TEST-Pick-Foo-BAR-Full
$ camelcaseproc input-file
$ echo "IamTestECHO TEST PickFoo BARFull" | camelcaseproc
С GNU grep, используя свойства символов Unicode и нулевые -утверждения ширины:
grep -Po '((?<!=\p{Lu})\p{Lu}|(?<!=\pL)\pL)\p{Ll}*'
$ echo 'IamHelloTest forYou PickTest;' | grep -Po '((?<!=\p{Lu})\p{Lu}|(?<!=\pL)\pL)\p{Ll}*'
Iam
Hello
Test
for
You
Pick
Test
$ echo 'АямГеллоТест форЮ ПикТест' | grep -Po '((?<!=\p{Lu})\p{Lu}|(?<!=\pL)\pL)\p{Ll}*'
Аям
Гелло
Тест
фор
Ю
Пик
Тест
Если ваша реализация grep
поддерживает-o
(и не является открытой реализацией ast -, которая подавляет -o
для регулярных выражений, соответствующих пустой строке):
grep -o '[[:upper:]]*[[:lower:]]*'
Сsed
:
sed -Ee 's/([a-z])([A-Z])/\1\n\2/g' < your_file
Сgrep
:
grep -Eo '[A-Z][a-z]+' < your_file