📌  相关文章
📜  bash 拆分并获得最后一个 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:39:28.675000             🧑  作者: Mango

Bash 拆分并获得最后一个

在 Bash 中,我们可以使用许多方法来拆分字符串。本文将介绍如何使用 Bash 来拆分字符串并获取最后一个部分。

通过定界符拆分字符串

我们可以使用 IFS(Internal Field Separator)来将字符串拆分为数组。IFS 是一个 Bash 的环境变量,用于定义 Bash 将输入拆分成字段的分隔符。默认情况下,IFS 由空格、制表符和换行符组成,但我们可以在需要时更改它。

下面的示例演示如何使用 - 作为分隔符来拆分字符串并获取最后一个部分。

#!/bin/bash

string="home-user-documents-file.txt"
IFS='-' read -ra parts <<< "$string"
last_part=${parts[-1]}

echo "String: $string"
echo "Last part: $last_part"

输出:

String: home-user-documents-file.txt
Last part: file.txt

在上面的示例中,我们首先将 string 变量设置为要拆分的字符串。然后我们将 IFS 设置为 -,以指定这是拆分字符串所使用的分隔符。接下来,我们使用 read -ra 命令来将字符串拆分为数组,并将该数组分配给变量 parts。然后我们可以使用 ${parts[-1]} 来获取最后一个部分。

通过最后一个分隔符拆分字符串

如果我们知道我们要拆分的字符串包含多个分隔符,我们可以使用 Bash 的内置变量扩展功能来获取最后一个分隔符右侧的部分。

#!/bin/bash

string="home/user/documents/file.txt"
last_delimiter=${string##*/}
last_part=${string%"$last_delimiter"}

echo "String: $string"
echo "Last part: $last_part"

输出:

String: home/user/documents/file.txt
Last part: home/user/documents/

在上面的示例中,我们首先将 string 变量设置为要拆分的字符串。然后,我们使用 ${string##*/} 来获取最后一个斜杠右侧的部分,这些部分构成了 last_delimiter 变量。接下来,我们使用 ${string%"$last_delimiter"} 来删除 last_delimiter 变量中的部分,并将结果分配给 last_part 变量。

总结

在 Bash 中,我们可以使用各种方法来拆分字符串并获取最后一个部分。我们可以使用 - 作为分隔符,也可以使用 Bash 的变量扩展功能来获取最后一个分隔符右侧的部分。无论使用哪种方法,我们都可以轻松地拆分和获取字符串的任何部分。