![正規表現を使用したファイルコンテンツの抽出[閉じる]](https://linux33.com/image/7297/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%AE%E6%8A%BD%E5%87%BA%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
リンクがありますが、wwwと.comを返したいです。
たとえば、www.blablabla.com
次のように返されます。blablabla
どうすればいいですか?私が 'を使用すると、grep '\.[a-zA-Z0-9\.-]*\.
それは私に与える.blablabla.
答え1
$ echo "www.blablabla.com" | grep -oP '(?<=\.)[a-zA-Z0-9\.-]*(?=\.)'
blablabla
-o
- 一致する行の一致部分のみを印刷する
-P
--Perl正規表現の使用
(?<=\.)
—文字通り.
「ポジティブなリアビュー」とも呼ばれた後…
[a-zA-Z0-9\.-]*
- 0個以上の小文字と大文字、数字0〜9、リテラル、.
ハイフンと一致します。
(?=\.)
.
- その後、「ポジティブビュー」とも呼ばれるテキストが続きます。
これを見てツアーの詳細情報へのリンク。同様のツールhttps://regex101.com/正規表現を分解するのに役立ちます。
答え2
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