zoukankan      html  css  js  c++  java
  • shell脚本的字符串一些常用操作

     字符串长度:

    ${#string}可获取string字符串的长度,如下:

    jenkins@soft1pc:~$ str="who are you"
    jenkins@soft1pc:~$ echo ${#str}
    11

    ${string:position:length}表示在字符串string中截取从position开始长度为length的字符串,shell脚本字符串的起始位置与python一致也是从0开始算的

    jenkins@soft1pc:~$ str="who are you"
    jenkins@soft1pc:~$ echo {str:2:5}
    {str:2:5}
    jenkins@soft1pc:~$ echo ${str:2:5}
    o are

    字符串截取(不匹配字符)
    符号 含义解析
    ${string#substring} 从变量${string}的开头, 删除最短匹配${substring}的子串
    ${string##substring} 从变量${string}的开头, 删除最长匹配${substring}的子串
    ${string%substring} 从变量${string}的结尾, 删除最短匹配${substring}的子串
    ${string%%substring} 从变量${string}的结尾, 删除最长匹配${substring}的子串
    我们可以总结一下规律:

    换句话来说,#总是表示左边算起,%总是表示右边算起;一个符号表示最短匹配,两个符号表示最长匹配。

    jenkins@soft1pc:~$ str="who are you"
    jenkins@soft1pc:~$ echo ${str#"who"}
    are you
    jenkins@soft1pc:~$ echo ${#str%"you"}
    -bash: ${#str%"you"}: bad substitution
    jenkins@soft1pc:~$ echo ${str%"you"}
    who are

    我们可以利用该特点做一些有意义的事情,下面举几个例子:

    # 定义字符串
    f=$(realpath 空间数据处理环境搭建.pdf)
    # 输出该字符串变量的值,结果为/Users/tanzhenyu/Resources/Books/Python空间数据处理实战/空间数据处理环境搭建.pdf
    echo $f
    # 第一件事情:提取文件名称,输出结果为:空间数据处理环境搭建.pdf
    echo ${f##*/}
    # 第二件事情:提取文件扩展名,输出结果为:pdf
    echo ${f##*.}
    # 第三件事情:提取父目录,输出结果为:/Users/tanzhenyu/Resources/Books/Python空间数据处理实战
    echo ${f%/*}
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    当然,Shell编程中我们也可以使用basename和dirname两个命令分别提取文件名和父目录名称:

    # basename提取当前文件或者当前目录名称,输出结果为:空间数据处理环境搭建.pdf
    echo $(basename $f)
    # dirname提取父目录名称,输出结果为:/Users/tanzhenyu/Resources/Books/Python空间数据处理实战
    echo $(dirname $f)
    1
    2
    3
    4
    子串替换
    符号 含义解析
    ${string/substring/replacement} 使用${replacement}, 来代替第一个匹配的$substring
    ${string//substring/replacement} 使用${replacement}, 代替所有匹配的$substring
    ${string/#substring/replacement} 如果${string}的前缀匹配${substring}, 那么就用${replacement}来代替匹配到的${substring}
    ${string/%substring/replacement} 如果${string}的后缀匹配${substring}, 那么就用${replacement}来代替匹配到的${substring}
    注:${substring}可以是一个正则表达式.

    例子:

    # 把Windows的路径换成类UNIX的路径
    f='C:Windowssystem32cmd.exe'
    echo ${$f/////}
    # 输出结果为:C:/Windows/system32/cmd.exe

  • 相关阅读:
    基于MATLAB静态目标分割的药板胶囊检测
    基于YCbCr色彩模型的简易肤色识别器
    思考一个问题STM32的
    压力校准仪开发日志-10-21 迪文屏通信命令记录
    迪文屏使用须知
    结构体变量字节填充
    sizeof 的妙用
    结构体内存的对齐方式
    内存对齐
    中国游戏产业走向世界
  • 原文地址:https://www.cnblogs.com/linwenbin/p/10788410.html
Copyright © 2011-2022 走看看