我有一个字符串“r1/pkg/amd64/misc/hash/hash-r1.r5218.tbz”但是,我只想要“hash-r1.r5218.tbz”
所以,我试试这个
unix$ a="r1/pkg/amd64/misc/hash/hash-r1.r5218.tbz"
unix$ echo $a | sed 's/.*\/\([^\/]*\)\.tbz/\1/' //[1]
hash-r1.r5218 //I know this should work
unix$ echo $a | sed 's/.*\/\([^\/]+\)\.tbz/\1/' //[2]
r1/pkg/amd64/misc/hash/hash-r1.r5218.tbz //however I do not know why it does not work.
据我记得,正则表达式中的 + 意味着使用以前的正则表达式 1 次或更多次。* 在正则表达式中,表示使用前一个正则表达式 0 次或更多次。
谁能解释为什么 [2] 失败,非常感谢。