如何grep给定分隔符之间的第n个子字符串?

Abd*_*red 3 command-line grep regular-expression

假设我们有一个字符串,它的分隔符是?

Leslie Cheung April 1 ? Elvis August 16 ? Leonard Nimoy February 27
Run Code Online (Sandbox Code Playgroud)

我知道如何grep分隔分隔符之间的第一个子字符串:

echo $above_string | grep -oP "^[^?]*"
Leslie Cheung April 1
Run Code Online (Sandbox Code Playgroud)

我应该如何更改正则表达式以 grep 第二个或第三个子字符串?

rah*_*hul 12

怎么用cut?如果您想打印第二个图案

echo "$above_string" | cut -f2 -d "?"

第二列开始

echo "$above_string" | cut -f2- -d "?"