如何在Bash中查找字符串的长度

时间:2020-03-05 15:31:40  来源:igfitidea点击:

如果我们正在处理bash中的字符串,则可能需要知道字符串的长度。

幸运的是,在bash中获取字符串的长度非常简单。
假设我们有一个名为my_string的字符串。
其长度可以提取为:

${#my_string}

以下是一个可以更好地说明问题的示例:

Hyman@theitroad:~$my_string="igi"
Hyman@theitroad:~$echo "length is ${#my_string}"
length is 8

那很容易,不是吗?
我们可以将此字符串长度保存到另一个变量中,并在以后使用:

Hyman@theitroad:~$my_string="igi"
Hyman@theitroad:~$length=${#my_string}
Hyman@theitroad:~$echo "String length is $length"
String length is 8

像Linux中的大多数其他事物一样,这不是计算Bash中字符串长度的唯一方法。

使用expr命令获取bash中的字符串长度

让我们看看其他一些命令,这些命令可以测试bash中的字符串长度。

这些命令之一是expr命令。
它具有几个对字符串选项有用的选项。
其中,length给我们一个字符串的长度。

Hyman@theitroad:~$expr length "my string"
9

由于expr命令输出长度,因此我们应该使用命令替换将其存储在变量中。

#!/bin/bash
str="my string"
length=$(expr length "$str")
echo "Length of my string is $length"

现在,如果我们运行此bash shell脚本,它将打印长度:

Hyman@theitroad:~$bash string.sh 
Length of my string is 9

使用awk获取字符串的长度

AWK是超级通用的命令,用于在Linux命令行中编辑文本。
我们也可以使用它来计算字符串长度。

我们必须使用echo命令,然后使用管道重定向将其与awk一起解析:

Hyman@theitroad:~$echo "my string" | awk '{print length}'
9

如我们所见,除非我们熟悉awk命令的基础知识,否则记住语法并不容易。

使用wc命令计算字符串长度

在Linux中获取字符串长度的另一种方法是使用wc命令。

现在,wc命令用于计数文件中的行数,字符。

我们可以回显字符串并将其通过管道传递给wc命令。
-m选项给出字符计数。

Hyman@theitroad:~$echo -n "my string" | wc -m
9

注意echo命令的-n选项吗?
这很重要,因为echo会在末尾自动添加一个新的行字符\ n,它将使字符串的长度增加一。
使用-n选项,echo命令不会添加换行符。

我们可以使用命令替换将字符串长度存储在变量中,如前面的示例所示。

#!/bin/bash
str="my string"
length=$(echo -n "my string" | wc -m)
echo "Length of my string is $length"

就个人而言,${#string}是获取字符串长度的首选方法。
更容易记住。