【问题标题】:Shell script substring from first indexof substring来自第一个 indexof 子字符串的 Shell 脚本子字符串
【发布时间】:2012-05-08 02:40:28
【问题描述】:

我想在 bash 中完成以下伪代码的等效操作(a 和 b 都是我的脚本的输入):

String a = "some long string";
String b = "ri";
print (a.substring(a.firstIndexOf(b), a.length()); //prints 'ring'

如何在 shell 脚本中执行此操作?

【问题讨论】:

    标签: string bash shell unix scripting


    【解决方案1】:

    你可以这样做:

    $ a="some long string"
    $ b="ri"
    $ echo $a | grep -o "$b.*"
    ring
    

    【讨论】:

    • 不是字符串本身的索引,如果找不到则弹出错误
    【解决方案2】:

    grepsed等都可以用,但不是纯bash。

    expr 是一个不错的选择,但index 参数不是,因为它匹配字符而不是整个字符串,尝试使用a = "some wrong string" 它匹配第一个r

    改为使用 expr match 及其正则表达式参数:

    a="some long string";
    b="ri";
    echo ${a:$(expr match "$a" ".*${b}") - $(expr length "$b")}
    

    它也适用于a = "some wrong string"

    【讨论】:

      【解决方案3】:

      试试这个:

      a="some long string"
      b="ri"
      
      echo  ${b}${a#*${b}}
      

      【讨论】:

        【解决方案4】:

        试试:

            $ a="some long string"
            $ b="ri"
        
            $ echo ${a/*$b/$b}
            ring
        
            $ echo ${a/$b*/$b}
            some long stri
        

        【讨论】:

        • 聪明。不过,您应该将参数双引号引用到echo
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多