【问题标题】:Bash: substring from first occurrence of a character to the second occurrenceBash:从第一次出现字符到第二次出现的子字符串
【发布时间】:2018-02-05 21:11:13
【问题描述】:

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

示例...

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

字符 = "-"

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

【问题讨论】:

    标签: string bash substring character find-occurrences


    【解决方案1】:

    为什么不直接使用 cut 命令:

    str="abc-def-ghi"

    回显 $str |剪切 -f 2 -d "-"

    ,其中 -d 选项是分隔符,-f 选项代表片段编号(第一个片段编号为 1,而不是数组常见的 0)。

    【讨论】:

      【解决方案2】:

      我会使用两个参数扩展。

      str="abc-def-ghi"
      tmp=${str#*-}  # Remove everything up to and including first -
      result=${tmp%%-*} # Remove the first - and everything following it
      

      【讨论】:

        【解决方案3】:

        假设你有:

        s="abc-def-ghi"
        ch='-'
        

        使用 BASH read 内置:

        IFS="$ch" read -ra arr <<< $s && echo "${arr[1]}"
        

        或者,使用 BASH 正则表达式:

        re="$ch([^$ch]*)$ch"
        
        [[ $s =~ -([^-]*)- ]] && echo "${BASH_REMATCH[1]}"
        

        输出:

        def
        

        【讨论】:

          【解决方案4】:

          可以将 awk 与 - 分隔符一起使用

          echo "abc-def-ghi" | awk -F'-' '{print $2}'
          

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

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

          【讨论】:

            猜你喜欢
            • 2019-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-26
            • 2013-03-02
            • 2022-01-18
            • 2022-10-07
            • 1970-01-01
            相关资源
            最近更新 更多