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

      在做shell批处理操作的时候,经常会涉及字符串相关操作,有很多操作命令,如awk,sed都可以做字符串的操作,其实shell内置一系列操作符号,可以达到类似效果,而且使用内部操作符会省略启动外部程序等时间,因此速度很快

    判断读取字符串的值

    ${var}:变量var的值,与$var相同

    ${var-default}:如果变量没有声明,那么就以$default作为其值

    ${var:-default}:若变量没有声明或者其值为空,则$default作为其值

    ${var+other}:若变量声明了,那么其值就是$other,否则为null字符串

    ${var:+other}:若变量被设置了,那么其值就是$other,否则为null字符串

    ${var?err_msg}:若变量没声明,那么就打印$err_msg

    ${var:?err_msg}:若变量没被设置,那么就打印$err_msg

    ${!varprefix*}:匹配之前所有以varprefix开头进行声明的变量

    ${!varprefix@}:匹配之前所有以varprefix开头进行声明的变量

    #!/bin/sh
    
    name='yang'
    DEFAULT='default_yang'
    OTHER='other_yang'
    ERR_MSG='ERR_yang'
    
    echo ${name}
    echo ${name1-$DEFAULT}
    echo ${name2:-$DEFAULT}
    
    echo ${name+$OTHER}
    echo ${name:+$OTHER}
    
    echo ${name?$ERR_MSG}
    echo ${name:?$ERR_MSG}
    
    echo ${!name*}
    echo ${!name@}
    

    字符串操作

    ${#string}:$string的长度

    ${string:position}:对string从位置position开始截取子串

    ${string:position:length}:对string从位置position截取长度为length的子串

    ${string#substring}:从string的开头,删除最短匹配subtring的子串

    ${string##substring}:从string开头,删除最长匹配substring的子串

    ${string%substring}:从string结尾,删除最短匹配substring的子串

    ${string%%substring}:从string结尾,删除最长匹配substring的子串

    ${string/substring/replacement}:使用replacement替换第一个匹配的substring

    ${string//substring/replacement}:使用replacement替换所有匹配的substring

    ${string/#substring/replacement}:如果string的前缀跟substring匹配,就用replacement来替换匹配到的substring

    ${string/%substring/replacement}:如果string的前缀跟substring匹配,就用replacement来替换匹配到的substring

    #!/bin/sh
    
    string='hello/hello/world/hello/python/hello/programming/programming'
    
    echo 'string: '$string
    
    echo ${#string}
    
    echo ${string:10}
    echo ${string:10:5}
    echo ''
    
    
    substring1='*/'
    substring2='/*'
    echo ${string#$substring1}
    echo ${string##$substring1}
    echo ${string%$substring2}
    echo ${string%%$substring2}
    echo ''
    
    replacement1='*/'
    replacement2='/*'
    echo ${string/hello//$replacement1}
    echo ${string//hello//$replacement1}
    echo ${string/#hello//$replacement1}
    echo ${string/%/programming/$replacement2}  

    性能比较

    在shell在可以通过awk,sed等命令实现

    速度相差百倍,调用外部命令,与内置操作符性能相差相当大,在shell编程中,尽量使用内置操作符和函数操作,使用awk,sed会出现相似的效果

    转载

  • 相关阅读:
    快速免费用宝塔面板加开源小程序商城源码搭建自己的商城程序
    小程序商城,到底是购买源码好还是直接使用SaaS平台好?
    51单片机串口通信的注记
    关于vi 分屏的一些指令
    偶遇bash 的while read line 的问题
    centos 6 设置无密码登录ssh 不成功问题
    关于js框架 dwz 与 yii的的分页 以及筛选的结合
    完美解决百度地图MarkerClusterer 移动地图时,Marker 的Label 丢失的问题
    微信小程序购物商城系统开发系列-目录结构
    微信小程序支付步骤
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/9592960.html
Copyright © 2011-2022 走看看