Использование регулярного выражения для извлечения содержимого файла

У меня есть ссылка, и я хотел бы вернуть только контент между www. и .com

например, www.blablabla.com вернет только blablabla

Как я мог это сделать? Когда я использую grep '\.[a-zA-Z0-9\.-]*\. «Это дает мне .blablabla.

  • ls | Работа grep не работает с ls --color
  • grep, чтобы найти "print" не "#print"
  • Условный awk через 4 столбца
  • Онлайн-тренировки?
  • grep с сортировкой по столбцу
  • Есть ли способ добавить заголовок к «grepped» выходному?
  • Как вы можете перемещать (или копировать) все файлы определенного типа в каталог в Unix?
  • grep-файлы, содержащие текст без комментария
  • 2 Solutions collect form web for “Использование регулярного выражения для извлечения содержимого файла”

     $ echo "www.blablabla.com" | grep -oP '(?<=\.)[a-zA-Z0-9\.-]*(?=\.)' blablabla 

    -o – печатать только согласованные части соответствующей строки

    -P – Использовать регулярное выражение Perl

    (?<=\.) – после литерала . , ака, «позитивный взгляд» …

    [a-zA-Z0-9\.-]* – сопоставлять ноль или более экземпляров символов нижнего и верхнего регистра, числа 0-9, литерал . и деф …

    (?=\.) а затем литерал . , ака «положительный взгляд вперед»,

    См. Эту ссылку для более подробного просмотра . Такие инструменты, как https://regex101.com/, могут помочь вам разбить ваши регулярные выражения.

    sed решение:

     $ str='Hellowww.hello.comMywww.world.comWorld' $ echo "$str" | sed -e 's/com/com\n/g' | sed -ne '/.*www\.\(.*\)\.com.*/{ s//\1/p }' hello world 
    Linux и Unix - лучшая ОС в мире.