目录

工欲善其事

实践出真知

活跃标签: linux java mysql 待分类 windows js win10 springboot pdf idea docker 电路 esp32 vue macOS nginx git Arduino maven ffmpeg

存档:

X

[ Bash ] 命令进阶:获取字符串长度的七种方法

求字符串操作在shell脚本中很常用,下面归纳、汇总了求字符串的几种可能方法:

利用${#str}来获取字符串的长度

li13@DESKTOP-OH700S9:~$ str="ABCDEF"
li13@DESKTOP-OH700S9:~$ echo ${#str}
6
li13@DESKTOP-OH700S9:~$

利用awk的length方法

li13@DESKTOP-OH700S9:~$ echo ${str}|awk '{print length($0)}'
6
li13@DESKTOP-OH700S9:~$

备注:

  1. 最好用{}来放置变量
  2. 也可以用length($0)来统计文件中每行的长度

利用awk的NF项来获取

li13@DESKTOP-OH700S9:~$ echo $str |awk -F "" '{print NF}'
6
li13@DESKTOP-OH700S9:~$

备注: -F为分隔符,NF为域的个数,即单行字符串的长度

利用wc的-L参数来获取字符串的长度

li13@DESKTOP-OH700S9:~$ echo ${str}|wc -L
6
li13@DESKTOP-OH700S9:~$

备注: -L参数

  1. 对多行文件来说,表示打印最长行的长度! 82,表示/etc/passwd文件最长行的长度为82
  2. 对单行字符串而言,表示当前行字符串的长度!

利用wc的-c参数,结合echo -n参数

li13@DESKTOP-OH700S9:~$ echo -n $str|wc -c
6
li13@DESKTOP-OH700S9:~$

备注:

  1. -c参数: 统计字符的个数
  2. -n参数: 去除"\n"换行符,不去除的话,默认带换行符,字符个数就成了7

利用expr的length方法

li13@DESKTOP-OH700S9:~$ expr length ${str}
6
li13@DESKTOP-OH700S9:~$

利用expr的$str : ".*"技巧

li13@DESKTOP-OH700S9:~$ expr $str : ".*"
6
li13@DESKTOP-OH700S9:~$

备注: .*代表任意字符,即用任意字符来匹配字符串,结果是匹配到6个,即字符串的长度为6


标题:[ Bash ] 命令进阶:获取字符串长度的七种方法
作者:llilei
地址:http://solo.llilei.work/articles/2023/10/06/1696598557501.html