我有这个文字https://bitbucket.com/user/repo.git
,我希望打印repo
,/
和.git
之间的内容,而不包括分隔符。我有这个:
echo https://bitbucket.com/user/repo.git | grep -E -o '\/(.*?)\.git'
但它会打印/repo.git
。如何只打印repo
?
答案 0 :(得分:2)
将[^/]+(?=\.git$)
模式与-P
选项一起使用:
echo https://bitbucket.com/user/repo.git | grep -P -o '[^/]+(?=\.git$)'
请参阅online demo
[^/]+(?=\.git$)
模式匹配除/
以外的1个字符,后跟字符串末尾的.git
。
答案 1 :(得分:1)
您可以使用sed
来执行此操作
echo https://bitbucket.com/user/repo.git | sed -e 's/^.\*\\/\\(.\*\\).git$/\1/g'