【发布时间】:2020-05-21 11:20:10
【问题描述】:
我不明白这个命令使用“sed”的结果。
例如:
echo "Here is my website: https://mywebsite.blabla/files" | sed -e 's/.* //g'
结果:
https://mywebsit.blabla/files
现在我添加第二个“https”:
echo "Here is my https website: https://mywebsite.blabla/files" | sed -e 's/.* //g'
同样,sed 的结果是一样的。
据我了解,s/.* //g 表示替换任何匹配任何零个或多个字符的任何内容和一个没有任何内容的空格 (//),直到链的末尾。
显然我错过了一些东西。
有什么想法吗?
【问题讨论】:
-
为什么不应该一样呢?您将替换所有内容,直到最后一个空格。
https与您匹配的内容无关。 -
欢迎来到 SO。
.*是贪婪匹配,它将匹配到最后一个空格,因此它不会在最后一个https和最后一个空格之前停止匹配。 -
尝试将您的模式放入regex101.com;它将准确地解释发生了什么。