zoukankan      html  css  js  c++  java
  • shell 字符串包含关系

    # 方法1 —— 字符比较

    1. #!/bin/bash  
    2.   
    3. str1="hello"  
    4. str2="he"  
    5. str3="lo"  
    6.   
    7. if [ ${str1:0:2} = $str2 ]; then  
    8.     echo "$str1 include $str2"  
    9. fi  
    10.   
    11. if [ ${str1:2:4} = $str3 ]  
    12. then  
    13.     echo "$str1 include $str3"  
    14. else  
    15.     echo "$str1 not include $str3"  
    16. fi  

    运行结果:

    hello include he
    hello not include lo

    # 方法2 —— grep匹配

    1. #!/bin/bash  
    2.   
    3. str1="hello world"  
    4. str2="he"  
    5. str3="world "  
    6.   
    7. echo "$str1" | grep -q "$str2"  
    8. if [ $? -eq 0 ]; then  
    9.     echo "$str1 include $str2"  
    10. fi  
    11.   
    12.   
    13. echo "$str1" | grep -q "$str3"  
    14. if [ $? -eq 0 ]; then  
    15.     echo "$str1 include $str3"  
    16. else  
    17.     echo "$str1 not include $str3"  
    18. fi  

    运行结果:

    hello world include he
    hello world not include world 

    #方法3 —— 由方法2演变
    echo "hello world" | grep -q "he" && echo "include" || echo "not include"           # result : include

    echo "hello world" | grep -q "world " && echo "include" || echo "not include"          # result : not include

     

     

    #方法4

    1. #!/bin/bash  
    2.   
    3. str1="hello world"  
    4. str2="he"  
    5. str3="world "  
    6.   
    7.   
    8. [[ "${str1/$str2/}" != "$str2" ]] && echo "include" || echo "not include"  
    9.   
    10.   
    11. [[ "${str1/$str2/}" != "$str2" ]]  
    12. if [ $? -eq 0 ]; then  
    13.     echo "$str1 include $str2"  
    14. fi  

    运行结果:

    include
    hello world include he


    #方法5 —— expr 命令

    expr有模式匹配功能,可以通过指定冒号选项计算字符串中字符数,.* 即任何字符重复0次或多次

    expr 计算字符数:

    expr  "accounts.doc" : '.*'          # result : 12

    expr 截取字符串

    expr "accounts.doc" : '(.*).doc'         # result : accounts

    expr substr "hello world" 1 7              # result : hello w

    expr index "hello world" w                 # result : 7

    expr 截取数字

    expr "string in 123 line" : '.*in (.*)'                # result : 123 line

    expr "string in 123 line" : '.*in (.*)line'           # result : 123

    expr "http://192.168.1.100/platform_example/branch/demo_platform is at revision 81" : '.*at revision (.*)'         # result: 81

    substr 和 index 配合使用:

    expr substr "hello world" 1 $(expr index "hello world" w)            # result : hello w

    #方法6 —— awk的index函数

    awk 'BEGIN{info="this is hello world"; print index(info, "hello") ? "include" : "not include";}'            # result : include

    awk 'BEGIN{info="this is hello world"; print index(info, "helo") ? "include" : "not include";}'             # result : not include


    ${var#...}                  
    ${var%...}
    ${var/.../...}

     

    grep 精确匹配

    1) echo "hello hellos hell" | grep hell               # result  :  hello    hellos   hell

    2) echo "hello hellos hell" | grep -w hell          # result  :  hello    hellos   hell

    3) echo "hello hellos hell" | grep "<hell>"      # result  :  hello    hellos   hell

    1) 模糊匹配; 2) 单词匹配; 3) 正则域匹配; 推荐方式3)

    完整示例:

    test.txt

    bird
    birds
    angrybird
    angrybirds
    angry bird
    angry birds
    angry birds war

    grep.sh

    1. #!/bin/bash  
    2.   
    3. cat test.txt  
    4.   
    5. echo  
    6. echo "grep bird test.txt..."  
    7. grep birds test.txt  
    8.   
    9. echo  
    10. echo "grep -w bird test.txt..."  
    11. grep -w birds test.txt  
    12.   
    13. echo  
    14. echo "grep "<birds>" test.txt..."  
    15. grep "<birds>" test.txt  


    运行结果:

    bird
    birds
    angrybird
    angrybirds
    angry bird
    angry birds
    angry birds war


    grep bird test.txt...
    birds
    angrybirds
    angry birds
    angry birds war


    grep -w bird test.txt...
    birds
    angry birds
    angry birds war


    grep <birds> test.txt...
    birds
    angry birds
    angry birds war

  • 相关阅读:
    Python中所有的关键字
    关于selenium的8种元素定位
    对提示框的操作
    selenium+webservice进行百度登录
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled...报错解决
    Vue中使用echarts
    npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142解决方法
    插入排序
    冒泡排序优化
    roject 'org.springframework.boot:spring-boot-starter-parent:XXX' not found 解决
  • 原文地址:https://www.cnblogs.com/bluecoder/p/3741163.html
Copyright © 2011-2022 走看看