zoukankan      html  css  js  c++  java
  • 字符串的操作

    字符串的操作

    一.判断读取字符串
    ${var} ;变量var的值与$var相同
    ${var-DEFAULT} ;如果var没有被声明,那么就以$DEFAULT作为其值*
    ${var=DEFAULT};如果var没有被声明,那么就以$DEFAULT作为其值*
    ${var+OTHER};如果var被声明了,那么其值就是$OTHER,否则为空。
    ${var.+OTHER} 如果var被声明了,那么其值就是$OTHER,否则为空。
    ${var?ERR};如果var没有被声明,那么就打印$ERR*
    ${var.?ERR};如果var没有被声明,那么就打印$ERR*
    ${!varprefix*};匹配之前所有以varprefix开头进行声明的变量
    ${!varprefix@}匹配所有以varprefix开头进行声明的变量

    例子;

    [root@foundation101 mnt]# echo ${abc-ok}
    ok
    [root@foundation101 mnt]# echo ${abc}
    
    [root@foundation101 mnt]# echo ${abc=ok}
    ok
    [root@foundation101 mnt]# echo ${abc="ok"}
    ok
    [root@foundation101 mnt]# echo ${abc}
    Ok
    
    [root@foundation101 mnt]# var1=11;var2=22;var3=33
    [root@foundation101 mnt]# echo ${!va@}
    var1 var2 var3
    [root@foundation101 mnt]# echo ${!va*}
    var1 var2 var3
    

    二.字符串的操作
    ${#string} 长度
    ${string:position} 在字符串中,从位置$position开始提取字符串
    ${string:position:length} 在字符串中从位置$position开始提取长度为length的字串
    ${string%substring} 从字符串的结尾开始,删除最短匹配substring的子串
    ${string%%substring}从字符串的结尾开始,删除最长匹配substring的子串
    ${string/substring/replace} 使用$replace来代替第一个$substring
    ${string//substring/replace} 使用$replace 来代替所有$substring
    ${string/#substring/replace};如果$string的前缀匹配$subsstring,那么就用$replace来代替匹配的到的$substring
    ${string/%substring/replace}如果$string的后缀匹配$subsstring,那么就用$replace来代替匹配的到的$substring

    例子:
    1,长度‘

    [root@foundation101 mnt]# test="best wish to you"
    [root@foundation101 mnt]# echo ${#test}
    16
    [root@foundation101 mnt]# echo ${test} | wc -m      ##多一个字符
    17
    [root@foundation101 mnt]# echo `expr length $mimi`
    15
    

    ${#变量名}得到字符串的长度
    2,截取字符串
    [root@foundation101 mnt]# echo ${test:5}
    wish to you
    [root@foundation101 mnt]# echo ${test:5:8}
    wish to

    ${变量名:起始:长度} 得到子字符串

    3,字符串的删除

    root@foundation101 mnt]# mimi="mmm/ccc/ml/boot"
    [root@foundation101 mnt]# echo ${mimi#*/}
    ccc/ml/boot
    [root@foundation101 mnt]# echo ${mimi#/}
    mmm/ccc/ml/boot
    [root@foundation101 mnt]# echo ${mimi##/}
    mmm/ccc/ml/boot
    [root@foundation101 mnt]# echo ${mimi##*/}
    boot
    [root@foundation101 mnt]# echo ${mimi%*/}
    mmm/ccc/ml/boot
    [root@foundation101 mnt]# echo ${mimi%/*}
    mmm/ccc/ml
    [root@foundation101 mnt]# echo ${mimi%%/*}
    mmm
    

    ${变量名%substring}从字符串的结尾开始配备substring
    ${变量名#substring} 从字符串的开头配备substring

    注意:
    ${test##/} ${test%/} 分别是得到文件名或者目录地址最简单的方法

    4,字符串的替换

    [root@foundation101 mnt]# echo ${mimi///\}
    mmmccc/ml/boot
    [root@foundation101 mnt]# echo ${mimi////\}
    mmmcccmloot
    

    ${变量/替换/替换值} 一个/表示替换第一个,//表示替换所有
    当查找中出现了“/” 请加转义字符”/表示

    三性能比较

    [root@foundation101 mnt]# time for i in $(seq 1000) ;do a=$(expr length $mimi);done
    
    real	0m0.829s
    user	0m0.181s
    sys	0m0.688s
    [root@foundation101 mnt]# time for i in $(seq 1000) ;do a=${#mimi};done
    real	0m0.005s
    user	0m0.005s
    sys	0m0.001s
    

    速度相差较大,调用外部命令,与内置操作符性能相差非常大,在shell编程中尽量使用内置操作符,或者函数完成,使用sed,awk会出现类似的结果。

  • 相关阅读:
    12、多线程:Threading、守护线程
    11.1、socket连接中的粘包、精确传输问题
    python网络编程:socket、服务端、客户端
    python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义
    9.4、__del__、__doc__、__dict__、__module__、__getitem__、__setitem__、__delitem__、__str__、__repr__、__call__
    python:异常处理、自定义异常、断言
    9.3、反射
    9.1.1、私有变量,私有方法
    关掉百度商桥请您留言和在线咨询
    飞飞影视cms标签
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5708078.html
Copyright © 2011-2022 走看看