Задать вопрос

Как извлечь подстроку из строки при помощи grep?

Не могу понять как используя grep получить только часть подстроки.
В perl я всегда делал так:
my ($country) = ' <img src="./images/flags/AZ.png"> Azaza</p>' =~ m!flags/\w+\.png"> (\w+)</p>!;

Таким образом получал в переменную $country значение Azaza.
Пытался сделать вот так:
echo "blablabla111blablabla" | grep -P "\w+(\d+)\w+"

Но оно не работает. Точнее работает но выбирается вся строка, а не только то что я взял в скобки. Ну либо я не понял как оно работает в grep.
  • Вопрос задан
  • 14005 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
adugin
@adugin
$ echo '<img src="./images/flags/AZ.png">Azaza</p>' | grep -oP '(?<=\.png">)(\w+)(?=</p>)'
Azaza
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
выбирается вся строка, а не только то что я взял в скобки

Может вам sed для этого?

echo "blablabla111blablabla" | sed -ne 's/[[:alpha:]]\+\([[:digit:]]\+\)[[:alpha:]]\+/\1/gp'
Ответ написан
Комментировать
@AVKor
Пара вариантов:
  1. С egrep:
    echo '<img src="./images/flags/AZ.png">Azaza</p>' | egrep -o '>.+<' | egrep -o '[^<>]*'

  2. С awk:
    echo '<img src="./images/flags/AZ.png">Azaza</p>' | awk -F"<" '{print $2}' | awk -F">" '{print $2}'

Ответ написан
@caa888
Еще так))
echo '<img src="./images/flags/AZ.png">Azaza</p>' | cut -f2 -d'>' | cut -f1 -d'<'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы