В приведенном ниже программном коде взять переменные, проверяемые синтаксической конструкциями [ ... ]
в двойные кавычки как показано в комментариях к программе.
Написать регулярное выражение на Perl
Может кто знает?
let "last_two_sym = $SECONDS - $SECONDS / 100 * 100" # десятки и единицы
if [ $last_two_sym -ge 11 -a $last_two_sym -le 19 ]#### if [ "$last_two_sym" -ge 11 -a "$last_two_sym" -le 19 ]
then
units="секунд" # для чисел, которые заканчиваются на "...надцать"
else
let "last_sym = $last_two_sym - $last_two_sym / 10 * 10" # единицы
case "$last_sym" in
"1" )
units="секунду" # для чисел, заканчивающихся на 1
;;
"2" | "3" | "4" )
units="секунды" # для чисел, заканчивающихся на 2, 3 и 4
;;
* )
units="секунд" # для всех остальных (0, 5, 6, 7, 8, 9)
;;
esac
fi
>в двойные кавычки как показано в комментариях к программе.
>Написать регулярное выражение на Perl
>Может кто знает?Что-то не очень понял задание, а додумывать не хочу. Если тебе нужно узнать что переменная заканчивается на что-то, то можно написать так: if($var~=/1$/) Знак доллара в конце означает как раз конец строки. (вроде синтаксис Перла правильно написал? ;) )
>>в двойные кавычки как показано в комментариях к программе.
>>Написать регулярное выражение на Perl
>>Может кто знает?
>
>Что-то не очень понял задание, а додумывать не хочу. Если тебе нужно
>узнать что переменная заканчивается на что-то, то можно написать так: if($var~=/1$/)
>Знак доллара в конце означает как раз конец строки. (вроде синтаксис
>Перла правильно написал? ;) )
Надо переменные в квадратных скобках заключить в кавычки, а с переменными вне квадратных скобках ничего делать не надо
Через полгода ты сам забудешь, зачем писал хитрый regexp. Оставь тупую и понятную программу.
>В приведенном ниже программном коде взять переменные, проверяемые синтаксической конструкциями [ ...
>]
>в двойные кавычки как показано в комментариях к программе.
>Написать регулярное выражение на Perl
>Может кто знает?
>
>
>let "last_two_sym = $SECONDS - $SECONDS / 100 * 100" # десятки
>и единицы
>if [ $last_two_sym -ge 11 -a $last_two_sym -le 19 ]
>
>#### if [ "$last_two_sym" -ge 11 -a "$last_two_sym" -le 19 ]Ежели конечно ты не сильно волокеш в регехпах то можешь попробовать преобразовать вот эту программу в то что тебе нужно, она точно выделяет твои переменные, а захочешь что бы все это с командной строки, возись с палками сам ;-)))
#!/usr/bin/perl -w
while(<>) {
# данная программа ищет во входящем потоке строку:
# if [ $last_two_sym -ge 11 -a $last_two_sym -le 19 ]
# и добавляет кавычки к переменным
# те делает
# if [ "$last_two_sym" -ge 11 -a "$last_two_sym" -le 19 ]
# и выводит их.
# if(m/$(if \[ )(\$[^ ]*)([^$]*)(\$[^ ]*)( \])/) {
# print $1.'"'.$2.'"'.$3.'"'.$4.'"'.$5;
if(m/^(if \[ )(\$[^ ]*)([^\$]*)(\$[^ ]*)(.*$)/) {
print $1.'"'.$2.'"'.$3.'"'.$4.'"'.$5;
}
}