2015-07-19 2 views
1

так, например, у меня есть строка, как это:как получить строку между двумя строками

f=awerawet1351&q=aet12462awera&l=3ewar462&h=awiejt361 

, и я хочу взять подстроку между «д =» и «&», который является «aet12462awera» или «q = aet12462awera» также прекрасен. Я попытался использовать awk -F'&', но дело в том, что позиция для строки «q =» не исправлена. Иногда у меня будет

f= .... & l=.... &q=....& h=.... 

поэтому я не могу использовать awk -F'&' '{print $2}', чтобы получить результат.

Есть ли в любом случае для меня использование команды unix для ее получения? Спасибо!

+0

'Grep -op '(? <= (| &) = Д) [^ &] * <<<' – anishsane

ответ

0

Это похоже на работу:

STRING='f=awerawet1351&q=aet12462awera&l=3ewar462&h=awiejt361' 
echo $STRING | awk -F"q=" '{print $2}' | cut -f1 -d"&" 
+0

Да "$ QueryString?"! Это сделал трюк! Хотя мне все еще интересно, если это самый эффективный способ? – jxymixer

0
string='f=awerawet1351&q=aet12462awera&l=3ewar462&h=awiejt361' 
IFS='&' 
for field in $string; do 
    if [ "${field%=*}" = "q" ]; then 
     echo ${field#*=} 
    fi 
done 

Посмотрите на parameter expansion и IFS.

Смежные вопросы