zoukankan      html  css  js  c++  java
  • shell中处理字符串


    0.字符串的小知识点

    字符串可以由单引号' '包围,也可以由双引号" "包围,也可以不用引号,它们之间是有区别的:

    1) 由单引号' '包围的字符串:

    • 任何字符都会原样输出,在其中使用变量是无效的。
    • 字符串中不能出现单引号即使对单引号进行转义也不行

    2) 由双引号" "包围的字符串:

    • 如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
    • 字符串中可以出现双引号只要它被转义了就行

    3) 不被引号包围的字符串

    • 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号" "包围的字符串一样。
    • 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。

    获取字符串长度可以用${#string_name}

    1.字符串的截取

    1.1从指定位置开始截取

    原理

    原始字符串

    var=http://www.aaa.com/123.html

    结果

    左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示,起始数字是1

    ${string: start :length}

    start :length指定起始位置和长度,长度省略的话表示直到字符串的末尾

    echo ${var:0:5}

    http:

    echo ${var:7}

    www.aaa.com/123.html

    echo ${var:0-7:3}

    23.

    echo ${var:0-7}

    23.html

    1.2 从指定字符(子字符串)开始截取

    原理

    原始字符串

    var=http://www.aaa.com/123.html

    结果

    #、## 表示从左边开始删除。

    一个 # 表示从左边删除到第一个指定的字符;

    两个 # 表示从左边删除到最后一个指定的字符。

    echo ${var#*/} /www.aaa.com/123.html
    echo ${var##*/} 123.html

    %、%% 表示从右边开始删除。

    一个 % 表示从右边删除到第一个指定的字符;

    两个 % 表示从左边删除到最后一个指定的字符。

    删除包括了指定的字符本身。

    echo ${var%/*} http://www.aaa.com
    echo ${var%%/*} http:

    *是通配符的一种,表示任意长度的字符串

    如果不需要忽略指定字符左边/右边的字符,那么也可以不写*

    *表示零个或多个任意字符,?表示仅与一个任意字符匹配,[…]表示匹配中括号里面的字符,[!..]表示不匹配中括号里面的字符。

    echo ${var#http:/}

    echo ${var%/123.html}

    /www.aaa.com/123.html

    http://www.aaa.com

    1.3字符串截取的总结

    格式说明举栗
    ${string: 0-start :length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。

    var=/home/wwwroot/

    echo $var #result is /home/wwwroot/

    echo ${var:5} #result is /wwwroot/

    echo ${var: -5} #result is root/

    echo ${var:(-5)} #result is root/

    echo ${var:0-5} #result is root/

    echo ${var:1-5} #result is oot/

    ${string: 0-start}

    从 string 字符串的右边第 start 个字符开始截取,直到最后。

    从右边开始提取字串,但必须使用在冒号后面加空格一个数字整个num加上括号,如${var: −2}、${var:0-2}或${var:(-2)}。

    ${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。

    var="http://www.runoob.com/linux/linux-shell-variable.html"

    s1=${var%%t*}   结果:h

    s2=${var%t*}     结果:http://www.runoob.com/linux/linux-shell-variable.h

    s3=${var%%.*}   结果:http://www

    s4=${var#*/}      结果:/www.runoob.com/linux/linux-shell-variable.html

    s5=${var##*/}    结果:linux-shell-variable.html

    ${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
    ${string#*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
    ${string##*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
    ${string%*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
    ${string%%*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。

    1.4 按指定要求截取

    ls -al | cut -d "." -f2  获取后缀名 

    echo $test|cut -c1-8

    2.字符串的拼接

     脚本结果注意点
    拼接字符 $value1=home $value2=${value1}"=" echo $value2 home=

    1.在 Shell 中不需要使用任何连接符,将两个字符串并排放在一起就能实现拼接

    2.变量名要加{},避免变量名与其他字符向混淆

    拼接字符串

    var0=test

    var1=43

    echo ${var0}${var1}

    test43

    3.字符串的替换

    语法:${变量/查找/替换值} 一个'/'表示替换第一个,'//'表示替换所有,当查找中出现了特殊字符"/"需要转移成"/"。

    test='c:/windows/boot.ini'脚本结果
    替换第一个/

    echo ${test///\}

    c:windows/boot.ini

    替换所有/

    echo ${test////\}

    c:windowsoot.ini





  • 相关阅读:
    Js 之获取QueryString的几种方法
    Go语言 之md5加密
    跨域取文件(跨项目)
    System.IO
    System.Threading.Tasks
    JS存取Cookies值,附自己写的获取cookies的一个方法
    HttpServerUtility 和 HttpUyility
    JS格式化时间
    JS获取页面传过来的值
    Navigator 对象
  • 原文地址:https://www.cnblogs.com/ting152/p/12519416.html
Copyright © 2011-2022 走看看