リンクがあり、wwwの間のコンテンツのみを返したい。および.com
例:www.blablabla.com
はblablabla
のみを返します
どうすればできますか? grep '\.[a-zA-Z0-9\.-]*\.
'を使用すると、.blablabla.
が得られます
$ echo "www.blablabla.com" | grep -oP '(?<=\.)[a-zA-Z0-9\.-]*(?=\.)'
blablabla
-o
-一致する行の一致する部分のみを印刷します
-P
-Perl正規表現を使用
(?<=\.)
-リテラル.
の後、別名「ポジティブ後読み」...
[a-zA-Z0-9\.-]*
-0個以上の小文字と大文字のインスタンス、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