使用正则表达式提取文件内容

pno*_*nom 9 shell grep scripting bash

我有一个链接,我只想返回 www 之间的内容。和.com

例如www.blablabla.com只会返回blablabla

我怎么能那样做?当我使用grep '\.[a-zA-Z0-9\.-]*\.' 时,它给了我.blablabla.

KM.*_*KM. 16

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

-o -- 只打印匹配行的匹配部分

-P -- 使用 Perl 正则表达式

(?<=\.)- 在字面意思之后.,又名,“正面回顾”......

[a-zA-Z0-9\.-]*-- 匹配零个或多个大小写字符、数字 0-9、文字.和连字符的实例...

(?=\.)-- 后面跟着一个字面意思.,也就是“正向前瞻”

有关环视的更多信息,请参阅此链接https://regex101.com/ 之类的工具可以帮助您分解正则表达式。

  • 如果您不想使用“-P”,则无法单独使用 grep re 来完成此操作。如果你想坚持使用 `grep` ,请考虑使用 `tr` 来删除 `.`,就像这样 `echo 'www.blablabla.com' | grep -o '\.[a-zA-Z0-9\.-]*\.' | tr-d。` (2认同)