我正在尝试使用 sed 清理 URL 行以仅提取域。
所以来自:
http://www.suepearson.co.uk/product/174/71/3816/
我想要:
http://www.suepearson.co.uk/
(有或没有尾部斜杠都没关系)
我已经尝试过:
sed 's|\(http:\/\/.*?\/\).*|\1|'
和(转义非贪婪量词)
sed 's|\(http:\/\/.*\?\/\).*|\1|'
但我似乎无法让非贪婪量词 (?
) 工作,所以它最终总是匹配整个字符串。
最佳答案
基本的和扩展的 Posix/GNU 正则表达式都不能识别非贪婪量词;你需要稍后的正则表达式。幸运的是,这种情况下的 Perl 正则表达式很容易获得:
perl -pe 's|(http://.*?/).*|\1|'
关于regex - sed 中的非贪婪(不情愿)正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1103149/