web-dev-qa-db-ja.com

正規表現を使用してファイルのコンテンツを抽出する

リンクがあり、wwwの間のコンテンツのみを返したい。および.com

例:www.blablabla.comblablablaのみを返します

どうすればできますか? grep '\.[a-zA-Z0-9\.-]*\. 'を使用すると、.blablabla.が得られます

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

-o-一致する行の一致する部分のみを印刷します

-P-Perl正規表現を使用

(?<=\.)-リテラル.の後、別名「ポジティブ後読み」...

[a-zA-Z0-9\.-]*-0個以上の小文字と大文字のインスタンス、0〜9の数字、リテラル.、ハイフンに一致します...

(?=\.)-続けてリテラル.、別名「前向きな先読み」

これを見てください 見回しの詳細についてはリンクhttps://regex101.com/ のようなツールは、正規表現を分解するのに役立ちます。

10
KM.

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
2
Vikyboss