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

Bash中如何获取点分隔字符串的首个值并存储到变量

在Bash中提取点分隔字符串第一个点前的子串

你现有代码的问题

  • 变量赋值错误:直接写$chicken.fasta.count.sorted.topthree.txt会被Bash当作变量解析,正确写法是用双引号包裹字符串:s="chicken.fasta.count.sorted.topthree.txt"
  • 参数展开用法错误:${s%.*}是从字符串末尾删除最短的.xxx后缀,执行后会得到chicken.fasta.count.sorted.topthree,并非你需要的第一个点前内容;同时代码还缺少闭合的}

正确实现方法

方法1:Bash内置参数展开(推荐,效率最高)

使用${s%%.*}语法,它会从字符串末尾删除最长的.xxx后缀,直接保留第一个点之前的内容:

s="chicken.fasta.count.sorted.topthree.txt"
animal_name="${s%%.*}"
echo $animal_name  # 输出结果:chicken

方法2:使用cut命令

指定分隔符为.,提取第一个字段:

s="chicken.fasta.count.sorted.topthree.txt"
animal_name=$(echo "$s" | cut -d '.' -f 1)
echo $animal_name

方法3:使用awk命令

按.分割字符串,输出第一个字段:

s="chicken.fasta.count.sorted.topthree.txt"
animal_name=$(echo "$s" | awk -F '.' '{print $1}')
echo $animal_name

内容的提问来源于stack exchange,提问作者Arjun Harer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:02:33