Bash:从字符第一次出现到第二次出现的子串

Ste*_*lsh 6 string bash substring character find-occurrences

在 bash 中,如何获取从字符第一次出现到同一字符第二次出现的所有内容的子字符串。

例子...

输入字符串 = "abc-def-ghi"

字符 = "-"

所需的输出字符串 = "def"

bel*_*liy 6

可以使用带有-分隔符的awk

echo "abc-def-ghi" | awk -F'-' '{print $2}'
Run Code Online (Sandbox Code Playgroud)

-F - 使用什么字段分隔符。

{print $2} - 打印第二个位置


che*_*ner 5

我会使用两个参数扩展。

str="abc-def-ghi"
tmp=${str#*-}  # Remove everything up to and including first -
result=${tmp%%-*} # Remove the first - and everything following it
Run Code Online (Sandbox Code Playgroud)