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

Linux脚本需求:拆分字符串并提取非整数字段拼接结果

解决Linux脚本字符串拆分与过滤问题

先给你指出原脚本的几个问题:

  • 变量赋值不能有空格,item = xxx这种写法会报错,得改成item="grub2-systemd-sleep-plugin-2.02-153.1"
  • read -rasplitIFS里少了空格,应该是read -ra splitIFS <<< "$item",否则命令会识别错误

接下来是实现需求的完整脚本:

# 正确赋值变量,注意不要有空格
item="grub2-systemd-sleep-plugin-2.02-153.1"
# 按"-"拆分字符串到数组
IFS='-' read -ra split_arr <<< "$item"

# 初始化结果变量
result=""

# 遍历数组每个元素
for word in "${split_arr[@]}"; do
    # 判断当前元素是否为纯整数(只包含数字)
    if ! [[ "$word" =~ ^[0-9]+$ ]]; then
        # 如果不是整数,拼接到结果里,注意处理开头的"-"
        if [ -z "$result" ]; then
            result="$word"
        else
            result="$result-$word"
        fi
    fi
done

# 输出最终结果
echo "$result"

运行这个脚本就能得到grub2-systemd-sleep-plugin的预期输出。

关键逻辑说明:

  • 用[[ "$word" =~ ^[0-9]+$ ]]正则匹配纯整数,!表示取反,只保留不匹配的元素
  • 拼接时判断结果是否为空,避免开头多出来一个-

内容的提问来源于stack exchange,提问作者saravanan jothilingam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:40:26