Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: BASH выдернуть перемынные из регулярки  (Прочитано 715 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн S-VL

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
  • All OS
    • Просмотр профиля
Здравствуйте!

допустим в переменной:

myvar="trololo, this text ... 123
abc abc sadasdasdsam, sasd=123, 20.
sa sadsad23= 34sadsadsad,sadsadas";

Хочу вывести несколько значений, как то так:
echo "${myvar}" | grep -E "sasd\=([0-9])"
как мне получить то, что в скобках т.е. он мне выведет:
abc abc sadasdasdsam, sasd=123, 20.
мне нужно получить: 123

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: BASH выдернуть перемынные из регулярки
« Ответ #1 : 18 Января 2015, 14:08:48 »
Цитата: man grep
echo "${myvar}" | grep -oP "sasd=\K[0-9]+"
А вообще это не Ъ гонять переменную через grepnew_var={myvar#*sasd=}
new_var={newvar%%[^0-9]*}
« Последнее редактирование: 18 Января 2015, 15:01:19 от Azure »
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн S-VL

  • Автор темы
  • Участник
  • *
  • Сообщений: 166
  • All OS
    • Просмотр профиля
Re: BASH выдернуть перемынные из регулярки
« Ответ #2 : 20 Января 2015, 09:04:31 »
Спасибо то что нужно!

Я очень извиняюсь, подскажите пожалуйста дописываю второй скрипт ! интерпритатор /bin/sh !

mystring="hello world dude";

for str in ${mystring}; do
   echo $str;
done

как получить вывод в итоге:
hello
world
dude

Спасибо

Пользователь решил продолжить мысль 20 Января 2015, 09:41:33:
Все, сам затупил за место ${mystring} надо $mystring
« Последнее редактирование: 20 Января 2015, 09:41:33 от S-VL »

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.