本篇内容主要包括以下内容:

  1. 获取字符串长度的方法
  2. 各方法间性能比较
  3. 相关内容补充

说明:本篇内容为学习shell  编程(老男孩教程) 笔记,部分内容为相关视频课程内容,补充部分是我查资料所得,方便理解学习。有需要老男孩shell 编程视频教程的同学,可以在评论区回复。

   1.获取字符串长度

         首先做个示例数据出来:

zhang@zhang-virtual-machine:~$ vars=`seq -s " "  100`
zhang@zhang-virtual-machine:~$ echo $vars
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
zhang@zhang-virtual-machine:~$

至于这里涉及到的seq 命令,会在第三部分(相关内容补充中会详细说到)。

1.使用字符串长度获取${#var}

zhang@zhang-virtual-machine:~$ echo ${#vars}
291
zhang@zhang-virtual-machine:~$

2.使用wc 方法

zhang@zhang-virtual-machine:~$ echo $vars | wc -m
292
zhang@zhang-virtual-machine:~$

注:使用这种方法统计出来的字符串长度要比实际字符长度多1。wc 命令会在后面介绍到。

3. 使用$(expr length "$var") 方法

zhang@zhang-virtual-machine:~$ echo $(expr length "$vars")
291
zhang@zhang-virtual-machine:~$

2.性能比较

zhang@zhang-virtual-machine:~$ time for i in $(seq 10000);do count=`echo ${#vars}` ;done;real    0m11.540s
user    0m0.308s
sys 0m3.764s
zhang@zhang-virtual-machine:~$ time for i in $(seq 10000) ;do count=`echo $vars | wc -m` ;donereal  0m44.385s
user    0m0.480s
sys 0m5.852s
zhang@zhang-virtual-machine:~$ time for i in $(seq 10000);do count=`echo expr length "${chars}"`;done;real    0m11.681s
user    0m0.204s
sys 0m3.908s
zhang@zhang-virtual-machine:~$

我们看到速度相差几倍(我这里数量级不大,试过好多次,一开始是从一百万开始测试的,结果有点慢,就折中了下),这里数量不大,差异不明显。一般情况调用外部命令处理,与内置功能操作性能相差较大。在shell 编程中,我们应尽量用内置操作或函数完成。

3.相关内容补充

1.seq

这里说下seq 命令的man 结果:

选项比较少:

  • -f, --format=格式        使用printf 样式的浮点格式
  • -s, --separator=字符串   使用指定字符串分隔数字(默认使用:\n)
  • -w, --equal-width        在列前添加0 使得宽度相同

%后面指定数字的位数 默认是%g,%3g那么数字位数不足部分是空格。

zhang@zhang-virtual-machine:~$ seq -f "str%3g" 1 10
str  1
str  2
str  3
str  4
str  5
str  6
str  7
str  8
str  9
str 10
zhang@zhang-virtual-machine:~$ seq -f "str%03g" 1 10
str001
str002
str003
str004
str005
str006
str007
str008
str009
str010
zhang@zhang-virtual-machine:~$ seq -f "str%03g" 90 100
str090
str091
str092
str093
str094
str095
str096
str097
str098
str099
str100
zhang@zhang-virtual-machine:~$

-w选项:指定输出数字同宽

zhang@zhang-virtual-machine:~$ seq -w 1 10
01
02
03
04
05
06
07
08
09
10
zhang@zhang-virtual-machine:~$

-s选项:指定分隔符(默认是回车)

zhang@zhang-virtual-machine:~$ seq -s " | " 1 10
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
zhang@zhang-virtual-machine:~$ seq -s " | " -f "str%03g" 9 11
str009 | str010 | str011
zhang@zhang-virtual-machine:~$

2.wc

还是一样,先直接上man wc 结果

-c或--bytes或——chars:只显示Bytes数-l或——lines:只显示列数-w或——words:只显示字数
zhang@zhang-virtual-machine:~$ cat /etc/passwd | wc 37      59    1968
zhang@zhang-virtual-machine:~$ cat /etc/passwd | wc -c
1968
zhang@zhang-virtual-machine:~$ cat /etc/passwd | wc -m
1968
zhang@zhang-virtual-machine:~$ cat /etc/passwd | wc -w
59
zhang@zhang-virtual-machine:~$ cat /etc/passwd | wc -l
37
zhang@zhang-virtual-machine:~$ 

3.time

time 命令用来统计给定命令(或程序)运行时间和系统资源消耗情况。

这个命令的详细参数及例子,我推荐这个:http://www.runoob.com/linux/linux-comm-time.html。

expr 这个命令,通过man expr 后可以看到,是执行表达式的。

这个命令由于在 shell 编程中使用的比较多,会在后续新写一篇文章来说一下,简单的可以参考下这个:http://www.runoob.com/linux/linux-comm-expr.html。

linux shell 字符串长度相关推荐

  1. linux shell 字符串操作(长度,查找,替换)详解 BASH

    linux shell 字符串操作(长度,查找,替换)详解 在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系 ...

  2. linux shell字符串及字符串长度获取方式

    linux shell字符串及字符串长度获取方式

  3. 在 Linux shell 字符串中,百分比符号是什么?

    当你正在学习如何完全使用 Linux shell 时,你可以能会觉得自己能够对字符串进行操作. 记住,今天q&一个文章的超级用户对读者的一个奇怪问题有答案. 今天,回答会话的问题来自超级用户的 ...

  4. linux shell 字符串操作(长度,查找,替换)详解

    引用 参考  http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html 在做shell批处理程序时候,经常会涉及到字符串相关操作.有 ...

  5. 【备忘】linux shell 字符串操作(长度,查找,替换,匹配)详解

    为什么80%的码农都做不了架构师?>>>    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内 ...

  6. linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略 ...

  7. linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )...

    在做shell批处理程序时候,经常会涉及到字符串相关操作.有很多命令语句,如:awk,sed都可以做字符串各种操作. 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略 ...

  8. shell字符串长度

    方法一 $ expr length "Find out the length of this string from Linux Bash shell." 57方法二 str1=a ...

  9. linux shell 字符串开头,shell字符串匹配的实现

    一.简介 Bash Shell提供了很多字符串和文件处理的命令.如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.grep.sed和awk内容比较多故单独列出, ...

最新文章

  1. 爱奇艺火爆的背后,个性化推荐排序是如何配合的?
  2. Concrete Math 混凝土数学(具体数学)随笔
  3. PaperNotes(7)-GANs模式坍塌/训练不稳定
  4. 更新SQL Server实例所有数据库表统计信息
  5. OpenCV(三) 图像的读取和显示
  6. Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
  7. [转]vue解决刷新页面vuex数据、params参数消失的问题
  8. idm chrome扩展被阻止解决办法
  9. 基于matlab的暴雨强度公式参数推求,基于Lingo和单纯形算法的综合暴雨强度公式参数解析...
  10. xposed 修改手机定位
  11. pdf文档怎么转换成word格式,pdf转word的方法
  12. Windows11安装安卓子系统WSA及安卓应用
  13. RPM包安装卸载命令
  14. 机器学习期末考试满分试卷答案
  15. 大型网站架构技术方案集锦[转]
  16. 白泽六足机器人导航贴(开源)
  17. Python多线程编程之线程子类化
  18. Reac16+Monaco打造代码编辑器(前端部分)
  19. 红米k40和红米k40pro的区别 哪个好
  20. 安卓讲课笔记2.1Activity概述——上机操作

热门文章

  1. Linux通过df命令查看显示磁盘空间满,但实际未占用问题
  2. pool win10提示bad_大师讲解win10蓝屏重启代码BAD,POOL,CALLER修复方法
  3. 用python或者vba把一个excel表格拆分成多个excel表格
  4. 技术真好玩第一期(2019-11-01)
  5. NOIP2018游记
  6. 不知道如何选用笔记本电脑的快来看看
  7. 仓库管理系统怎么选?想高效管理仓库的老板,别错过这篇干货!
  8. 数据库-音乐网站-sql
  9. Windows11 无法显示office图标
  10. python-字典列表集合字符串