美文网首页
Shell编程—【01】shell中常用的字符串操作

Shell编程—【01】shell中常用的字符串操作

作者: 苡仁ilss | 来源:发表于2019-05-19 13:28 被阅读0次

    Shell编程系列 https://www.jianshu.com/nb/37140890

    计算字符串长度

    • ${#string}
    • expr length "$string"
    v1="i love you"
    len=`expr length "$v1"`
    echo len
    

    获取子串中字符在字符串中的位置

    • expr index "string" "subString"
    v1="i love you"
    v2="ou"
    subIndex=`expr index "${v1}" "${v2}"`
    echo $subIndex
    # 4
    
    # 注意: 他其实是找子串中每个字符的其实位置,返回最前面的那个
    

    获取子串从头开始匹配的长度

    • expr match "string" "substr"
    v1="i love you"
    v2="ou"
    v3="i love"
    v4="i losadf"
    v5="i lov.*"
    subLen1=`expr match "$v1" "$v2"`
    subLen2=`expr match "$v1" "$v3"`
    subLen3=`expr match "$v1" "$v4"`
    subLen4=`expr match "$v1" "$v5"`
    echo $subLen1 $subLen2 $subLen3 $subLen4
    # 0 6 0 10
    

    抽取子串

    # 0123456789
    # iloveyou.
    v1="iloveyou."
    # 从第零位开=始
    echo ${v1:0}
    # iloveyou.
    
    # 从第三位开始
    echo ${v1:3}
    # veyou.
    
    # 从右边开始匹配 倒数第三个开始 注意冒号后面有空格 从右边-1开始数
    echo ${v1: -3}
    # ou.
    
    echo ${v1: -3:1}
    # o
    
    # 从左边开始匹配  
    echo ${v1:(-3)}
    # ou.
    
    # 从第2位开始 截取3个
    expr substr "$v1" 2 3
    # lov
    
    # 注意expr 索引从1开始 ${}是从0开始
    

    练习题

    给定一个字符串变量
    string=“You are an ugly boy! I'm a handsome boy!”
    要求启动脚本后
    1.输入1 打印字符串长度
    2.输入2 删除ugly 把 an 变成 a
    3.输入3 替换 'm 为 “ am” .
    4.输入4 替换 ! 为 .

    #!/bin/bash
    
    string="You are an ugly boy! I'm a handsome boy!"
    
    function print_tips
    {
        echo "********************************"
        echo "1.输入1 打印字符串长度."
        echo "2.输入2 删除ugly 把 an 变成 a"
        echo "3.输入3 替换 'm 为 “ am” ."
        echo "4.输入4 替换 ! 为 ."
        echo "********************************"
    }
    function len_of_string
    {
        echo "${#string}"
    }
    
    function del_ugly_and_change_an_to_a
    {
        str="${string/ ugly/}"
        echo "${str/an/a}"
    }
    
    function replace_m_am
    {
        echo "${string//\'m/ am}"
    }
    
    function replace_exclamation_mark_to_dot
    {
        echo "${string//!/.}"
    }
    
    while true
    do
        echo "「string = ${string} 」"
        echo
        print_tips
        read -p "Please input your choice (1|2|3|4|q)" choice
    
        case $choice in
            1)
                len_of_string
                ;;
            2)
                del_ugly_and_change_an_to_a
                ;;
            3)
                replace_m_am
                ;;
            4)
                replace_exclamation_mark_to_dot
                ;;
            q|Q
                exit
                ;;
            *)
                echo "Error, Input only in (1|2|3|4|q)"
                ;;
        esac
    done
    
    

    相关文章

      网友评论

          本文标题:Shell编程—【01】shell中常用的字符串操作

          本文链接:https://www.haomeiwen.com/subject/qnzfzqtx.html