string="aSlfd lk(An.)"
нужно в переменной R1 получить "aSlfd lk" а в переменной R2 "*An.*" т.е. все что находится внутри круглых скобок.Пытался сделать
R2=`echo "$c" | grep -E -o '\([a-Z0-9*. \ ]{1,}\)'`результат (An.) - но он в скобках, а мне скобки не нужны, и еще, стоит появится в строке string символ звездочки "aSlfd lk(*df)" - баш выводит список файлов моего хома.
Подскажите, как правильно написать регулярное выражение.
>string="aSlfd lk(An.)"
>Пытался сделать
>R2=`echo "$c" | grep -E -o '\([a-Z0-9*. \ ]{1,}\)'`
>
>результат (An.) - но он в скобках, а мне скобки не нужны,|egrep -o '\([a-Z0-9*. \ ]{1,}\)' |egrep -o '[^()]+'
или на sed-е склепать чего - одной командой.Ну, и традиционное: оно точно на баше надо?.. Впочем, сам так же от перла "бегаю". ;)
>и еще, стоит появится в строке string символ звездочки "aSlfd lk(*df)"
>- баш выводит список файлов моего хома.Слово "экранирование"... Сокровенное знание! Т-с-с, об этом нельзя!! :-P (Да, раз в недёлю - одно и то же, в этом форуме...)
а на sed как это сделать?
>а на sed как это сделать?Ну, как....
'\([a-Z0-9*. \ ]{1,}\)'
|sed -n 's!^[^(]\+(\([a-Z0-9*. \ ]\+\)).*$!\1!p'
Как-нибудь так... Не проверял, не отлаживал и не буду.
>[оверквотинг удален]
>
>результат (An.) - но он в скобках, а мне скобки не нужны,
>и еще, стоит появится в строке string символ звездочки "aSlfd lk(*df)"
>- баш выводит список файлов моего хома.
>
>Подскажите, как правильно написать регулярное выражение.
>
>
>
>а зачем усложнять? :)
echo "aSlfd lk(An.)"|cut -d "(" -f2|cut -d ")" -f1
>[оверквотинг удален]
>
>Пытался сделать
>R2=`echo "$c" | grep -E -o '\([a-Z0-9*. \ ]{1,}\)'`
>
>результат (An.) - но он в скобках, а мне скобки не нужны,
>и еще, стоит появится в строке string символ звездочки "aSlfd lk(*df)"
>- баш выводит список файлов моего хома.
>
>Подскажите, как правильно написать регулярное выражение.
>играем с awk:
r1=$(echo $string | awk -F'[()]' '{print $1}')
r2=`echo $string | awk -F'[()]' '{print $2}'`
$ string="aSlfd lk(An.)"; IFS='()' read r1 r2 <<<"$string"; echo "##$r1##$r2##"
##aSlfd lk##An.##
$ _
>$ string="aSlfd lk(An.)"; IFS='()' read r1 r2 <<<"$string"; echo "##$r1##$r2##"
>##aSlfd lk##An.##
>$ _+1