bash字符串处理

经常看到一些脚本中, 做一些简单的字符串处理/计算字符串长度,也动用管道+ awk/sed/cut等相对重量级工具:),其实大可不必, 因为bash本身就自带一些简单字符串处理功能, 这样至少可以减少重新fork一个进程来做字符串处理的开销, 也算为服务器减排co2做一些贡献吧:)
# 定义几个变量用于测试目的
FILE_NAME="/usr/local/app/world.txt"
TIME_NOW="`date +"%Y%m%d%H%M%S"`"
# 1. 取字符串的子串, 比如说从TIME_NOW分别取出日期和时间
DATE_TODAY="${TIME_NOW:0:8}"    # ${var:beg_pos:sub_str_length}, beg_pos是子串的起始位置(从0开始), sub_str_length为子串长度
TIME_TODAY="${TIME_NOW:8:6}"
# 或者
TIME_TODAY="${TIME_NOW:8}"      # sub_str_length为0表示到源字符串的结尾
# 取FILE_NAME中的文件名world.txt(不包括路径), 很多童鞋会马上想到basename, 或者一些类似于正则匹配的操作
${FILE_NAME##*/}                # 相当于basename ${FILE_NAME},即删除按从左至右,匹配一直到最后一个/之间的子串
${FILE_NAME%/*}                 # 相当与dirname, 即删除按从右至左方向开始,匹配到第一个/之间的子串
${FILE_NAME#*/}                 # 从左至右, 删除第一个/及左边的子串
${FILE_NAME%%/*}                # 从右至左, 删除至最后一个/及右边的子串
# 2. 字符串替换
${FILE_NAME/world.txt/hello.txt}    # 把第一个world.txt替换成hello.txt
${FILE_NAME//a/A}                   # 把所有的a替换成A
# 3. 计算字符串长度
${#FILE_NAME}                   # 计算FILE_NAME的长度
ARRAY=(abc defg hijklmn)
${#ARRAY}                       # 计算这个数组的维数
${#ARRAY[2]}                    # 计算这个数组第三个元素的长度

对于字符串的处理, 暂时能想到这么一些了, 接触这些东西, 也是因为偶尔会看看操作系统的一些脚本都这样用, 感觉比较专业一些, 自己以前处理一些字符串的时候, 也会用awk/sed加上管道等等, 感觉会略显业余同时确实会在cpu开销上作出一些贡献,虽然只是些许:)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值