首先抱歉,我应该学习一些 grep 和 regex,而不是问这个问题,但我现在时间有点紧。而且我最终肯定会学习 egrep。
因此这里是输入:
202.125.132.76 host av.google.com
202.147.187.10 host cms1web.google.com
202.147.187.10 host cms2web.google.com
"autodiscover.google.com
"cms1web.google.com
"cms2web.google.com
"dialin.google.com
- afghanistan.google.com
- autodiscover.google.com
- bangladesh.google.com
- bdbkashonline.google.com
- cms1web.google.com
*.google.com
*.ibank.google.com
*.ibankintl.google.com
*.itrade.google.com
202.125.133.232 403 host autodiscover.google.com
104.40.82.191 - EnterpriseEnrollment.google.com
107.154.104.16 - iTrade.google.com
107.154.108.2 - MIS.google.com
116.71.129.169 testpaymentapi.google.com
119.159.231.12 host av.google.com
输出应该是
av.google.com
cms1web.google.com
cms2web.google.com
autodiscover.google.com
so on.......
我只想要 *.*google.com 而不是结果中的任何其他内容,逐行
我根本不想要撇号和连字符,只想要如上所示的子域名。
如果你能帮助我,我将非常感谢 :)
答案1
$ grep -Po '^[^-*"]*?\K[[:alnum:]-]+\.google\.com$' input
av.google.com
cms1web.google.com
cms2web.google.com
autodiscover.google.com
testpaymentapi.google.com
av.google.com
-
非贪婪匹配并丢弃不包括、*
或 的字符序列"
然后
- 匹配并输出一系列字母数字字符和连字符(尽管您的输入没有任何字符,但它们在域名中是合法的),然后是
.google.com
答案2
要解决这样的任务,您需要设想清晰明确的逻辑规则。根据您的示例输出,您需要获取由以下内容组成的字符串:
- 三个词,
- 除以二,
- 第一个单词可以包含字母和数字,
- 其余两个单词仅包含字母,
- 所有字母都应小写。
如果上述内容正确,您可以通过以下命令组合来实现所需的输出sed
:grep
sed -e '/[A-Z]/d' -e '/*/d' input.txt | grep -oP '[a-z0-9]+\.[a-z]+\.[a-z]+'
解释:
- 第一个表达式(
-e
)将在读取文件时删除d
所有包含大写字母的行,第二个表达式将在读取文件*
时删除所有包含通配符的行。sed
input.txt
- 命令的输出
sed
通过管道传输|
到grep
。 - 意志
-o
的选择grep
仅显示与 PATTERN 匹配的行的部分并-P
告诉我们PATTERN 是 Perl 正则表达式. 在 PATTERN 中[a-z0-9]+
意味着我们需要匹配一个包含数字或/和小写字母的单词,并且必须至少有一个字符+
;\.
代表文字点,因为.
具有任何字符的含义,只要它不被反斜杠转义\
。
根据问题中提供的输入,示例输出(请注意,此处的输出已排序并且仅打印唯一值):
$ sed -e '/[A-Z]/d' -e '/*/d' input.txt | grep -oP '[a-z0-9]+\.[a-z]+\.[a-z]+' | sort -u
afghanistan.google.com
autodiscover.google.com
av.google.com
bangladesh.google.com
bdbkashonline.google.com
cms1web.google.com
cms2web.google.com
dialin.google.com
testpaymentapi.google.com
答案3
[a-z0-9]+\.[a-z]+\.*[a-z]+
此表达式为您选择:任何类型的域和子域。还推荐这个带有正则表达式测试和调试的网站:[1]:https://regex101.com/