如何提取一对相同字符之间的文本?

Tux*_*ife 2 python perl sed awk text-processing

输入:

blah?foobar1?blah
Run Code Online (Sandbox Code Playgroud)

期望的输出:

foobar1
Run Code Online (Sandbox Code Playgroud)

我想获取两个“?”之间的文本 人物。

假设总是有 0 或 2 个“?” 字符,使事情变得更容易。

我尝试了以下操作,但我不知道如何让它知道它是哪个事件:

echo "blah?foobar1?blah" | sed -n '/?/,/?/p'
Run Code Online (Sandbox Code Playgroud)

rah*_*hul 8

您可以使用剪切命令。

提取第二个模式:

echo "blah@foobar1@blah" | cut -f2 -d"@"

提取第二个和第三个模式:

echo "blah@foobar1@blah" | cut -f2,3 -d"@"

从第二个模式开始提取

echo "blah@foobar1@blah" | cut -f2- -d"@"

编辑:由于问题被标记为 awk。这是一个 awk 解决方案。

echo "blah@foobar1@blah" | awk -F'@' {'print $2'}
Run Code Online (Sandbox Code Playgroud)