首页 > 系统相关 >Shell子串_变量子串案例_统计字符长度以及命令执行时长

Shell子串_变量子串案例_统计字符长度以及命令执行时长

时间:2023-10-09 17:56:39浏览次数:35  
标签:子串 字符 Shell name echo ### tmp root localhost

子串案例

shell截取字符串通常由两种方式:从指定位置开始截取和从指定字符开始截取

  • 从指定位置开始截取:这种方式需要两个参数,除了指定的起始位置,还需要截取长度,才能确定要截取的字符串。既然需要指定其实位置,到底是从字符串的左边开始计数,还是从字符串右边开始计数,答案是shell同时支持两种计数方式

    1. 从字符串的左边开始计数;格式如下

      $(string:start:length)
      
      
       
       ~~~bash
       [root@localhost ~]# name="Mrxu160abcbbcacd"
       [root@localhost ~]# echo ${name}
       Mrxu160abcbbcacd
       [root@localhost ~]# echo${#name}
       bash: echo16: 未找到命令...
       [root@localhost ~]# echo ${#name}
       16
       [root@localhost ~]# echo ${name:6』
       > ^C
       [root@localhost ~]# echo ${name:6}
       0abcbbcacd
       [root@localhost ~]# echo ${name:6:3}
       0ab
       
    

    其中,string是要截取的字符串,start是起始位置(从左边开始,从0开始计数),length是要取的长度(省略的话表示直到字符串的末尾)

    1. 方法2
案例2 计算变量长度的各种玩法
  • 多种统计长度的命令

    ###方法1 用wc命令
    [root@localhost ~]# echo $name
    Mrxu160abcbbcacd
    [root@localhost ~]# echo ${#name}
    16
    [root@localhost ~]# echo ${name} |wc -l  ### -l 输出行数
    1
    [root@localhost ~]# echo ${name} |wc -L #### -L统计最长的那一行并统计其长度
    16
    [root@localhost ~]# 
    ##方法2 用expr 的length函数统计
    [root@localhost ~]# expr length ${name}
    16
    [root@localhost ~]# 
    ###方法3 用awk的统计长度,length函数
    [root@localhost ~]# echo "${name}" |awk '{print length($0)}'
    16
    [root@localhost ~]# 
    ###方法4 ,内置命令最快
    [root@localhost ~]# echo ${#name}
    16
    [root@localhost ~]# 
    
  • 统计命令执行时长

    字符串长度的统计方法这么多,谁最快?

    time 命令 ,统计命令执行时长

    for 变量 in 序列 1~100

    do

    ​ 执行的程序

    done

    写在一行的形式

    #写在一行的形式要用分号隔开
    [root@localhost tmp]# for i in {1..10} ; do  echo $i; done
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@localhost tmp]# 
    

    生成序列 命令seq

    [root@localhost tmp]# seq 3   #默认换行分隔符
    1
    2
    3
    [root@localhost tmp]# seq -s ";" 3   #-s 指定分隔符
    1;2;3
    [root@localhost tmp]# 
    
    #简单方法1
    [root@localhost tmp]# for num in {1..3} ; do  var=`seq -s ":" $num`; echo $var ;done
    1
    1:2
    1:2:3
    [root@localhost tmp]# 
    
    ###案例1;通过置命令来统计长度结算时长
    ###  &>/dev/null  将输出信息置入黑洞文件
    [root@localhost tmp]# time  for  num in {1..100} ; do var=`seq -s Mrxu 100`; echo ${#var} &>/dev/null;done
    
    real	0m0.118s   ###表示实际运行的时间
    user	0m0.042s   ###用户态执行的时间
    sys	0m0.045s       ###内核态态执行的时间  
    [root@localhost tmp]# 
    ###案例2;通过wc命令统计;因为用到管道符,效率肯定慢了
    [root@localhost tmp]# time  for  num in {1..100} ; do var=`seq -s Mrxu 100`; echo ${var}|wc -L &>/dev/null;done
    
    real	0m0.291s
    user	0m0.122s
    sys	0m0.135s
    [root@localhost tmp]#
    ###案例3通过expr命令的length函数统计
    [root@localhost tmp]# time  for  num in {1..100} ; do var=`seq -s Mrxu 100`;  expr length ${var} &>/dev/null;done
    
    real	0m0.212s
    user	0m0.092s
    sys	0m0.087s
    [root@localhost tmp]# 
    ###案例4 awk命令处理统计长度
    [root@localhost tmp]# time  for  num in {1..100} ; do var=`seq -s Mrxu 100`;echo ${var}|awk '{print length($0)}' &>/dev/null;done
    
    real	0m0.297s
    user	0m0.124s
    sys	0m0.136s
    [root@localhost tmp]# 
    
    

    shell编程,尽量使用Linux内置的命令,内置的操作,和内置函数,因为这些是C语言开发,效率最高;尽可能的减少管道符的操作。

标签:子串,字符,Shell,name,echo,###,tmp,root,localhost
From: https://www.cnblogs.com/xjianbing/p/17752564.html

相关文章

  • Shell变量_环境变量设置
    环境变量设置环境变量一般指的是用export内置命令导出的变量,用于定义shell的运行环境,保证shell命令的正确执行。shell通过环境变量确定登录的用户名、PATH路径、文件系统等各种应用。环境变量可以在命令行中临时创建,但是用户退出shell终端,变量即丢失,如要永久生效,需要修改环境变......
  • Shell变量_特殊变量
    特殊变量shell的特殊变量,用在如脚本,函数传递参数使用,有如下的特殊的,位置参数变量$0 获取shell脚本文件名,以及脚本路径$n获取shell脚本的第n个参数,n在1-9之间,如$1,$9,大于9则需要加大括号${10},参数空格隔开$#获取执行的shell脚本后面的参数总个数$*获取she......
  • Shell子串_变量子串的语法介绍
    变量子串的语法介绍name="Mrxujbing" #该变量的值,有索引是从0,1,2,3,4...${变量} 返回变量值${#name} 返回变量长度${变量:start} 返回变量start数值之后的字符串,且包含start的数字(start值就是索引值)${变量:start:length} 提取start之后的length限制的字符,例......
  • Go字符串实战操作大全!
    在本篇文章中,我们深入探讨了Go语言中字符串的魅力和深度。从基础定义、操作、字符编码到复杂的类型转换,每个环节都带有实例和代码示例来深化理解。通过这些深入的解析,读者不仅能够掌握字符串在Go中的核心概念,还能洞察Go设计哲学背后的思考。关注公众号【TechLeadCloud】,分享互......
  • vue中的循环遍历对象、数组和字符串
    vue循环遍历对象、数组和字符串1.循环遍历对象1.1vue在html里面循环遍历对象v-for="(val,key,i)indimItemMap":key="key" val-每一项key-key值i-第几个<el-table-columnprop="score"label="评分":show-overflow-tooltip="true"ali......
  • 【2023年10月09日】STF61_LINUX_SHELL
     STF61_LINUX_SHELL(上午)1. 什么是shell?shell就是一个用C语言编写的程序,是用户使用linux的桥梁。shell既是一种命令语言,也是一种程序设计语言2. 什么是shellscript?利用shell的功能所写的一个“程序”,这个程序是使用纯文本文档,将一些shell的语法与命令写在命令。搭......
  • STF61_LINUX_SHELL(上午)
     STF61_LINUX_SHELL(上午)1. 什么是shell?shell就是一个用C语言编写的程序,是用户使用linux的桥梁。shell既是一种命令语言,也是一种程序设计语言2. 什么是shellscript?利用shell的功能所写的一个“程序”,这个程序是使用纯文本文档,将一些shell的语法与命令写在命令。搭......
  • Postgresql 截取字符串
    截取字符串一般用substring就够用了。对于有些长度不定的就没法用这个函数了,但还是有规律的,可以某个字符分割。  这时需要​​split_part​​函数,如:--url一共3个-,字符串被分成4部分,取最后一部分,那最后一个参数就是4selectsplit_part(fs.cdn_url,'-',4)fromfile......
  • js数组转字符串方法(转)
    JavaScript 允许数组与字符串之间相互转换。其中Array 方法对象定义了3 个方法,可以把数组转换为字符串,如表所示。数组方法说明toString()将数组转换成一个字符串toLocalString()把数组转换成本地约定的字符串join()将数组元素连接起来以构建一个字符串......
  • shell脚本中的多行注释
     001、[root@pc1test01]#lsa.sh[root@pc1test01]#cata.sh##测试脚本#!/bin/bash:"##冒号和双引号之间有一个空格(也可以是单引号)xxxxxxxyyyyyyyyyyy##注释内容zzzzzzzz"((sum=8+9+......