You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash提取字符串中最后一个点号后的子串?

Bash提取字符串最后一个点号后的子串方法

给你几个实用的Bash实现方法:

方法一:Bash参数扩展(最简洁高效)

直接利用Bash自带的参数扩展特性,不需要额外工具:

# 定义要处理的字符串数组
strings=(
    "word1.word2.word3.xyz"
    "word1.word2.word3.word4.abc"
    "word1.word2.mno"
    "word1.word2.word3.pqr"
)

# 遍历数组提取内容
for str in "${strings[@]}"; do
    echo "${str##*.}"
done

原理:${str##*.} 表示从字符串开头删除最长的匹配 *. 的部分,剩下的就是最后一个点号之后的内容。

方法二:用awk工具处理

awk适合批量处理文本行,指定点号为分隔符后输出最后一个字段:

# 直接处理多行文本
echo -e "word1.word2.word3.xyz\nword1.word2.word3.word4.abc\nword1.word2.mno\nword1.word2.word3.pqr" | awk -F '.' '{print $NF}'

原理:-F '.' 设置字段分隔符为点号,$NF 是awk的内置变量,代表当前行的最后一个字段。

方法三:用sed工具替换

通过正则替换去掉最后一个点号之前的所有内容:

echo -e "word1.word2.word3.xyz\nword1.word2.word3.word4.abc\nword1.word2.mno\nword1.word2.word3.pqr" | sed 's/.*\.//'

原理:正则表达式 .*\. 匹配从字符串开头到最后一个点号的所有字符,替换为空后就剩下目标子串。

内容的提问来源于stack exchange,提问作者Md. Masudur Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:54:18