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

如何用Bash脚本将带范围的数据行增量展开?

Bash脚本实现数据增量展开方案

我来帮你搞定这个数据展开的需求!你的输入是包含年份和带区间的标识字符串,需要把每个区间拆分成连续的数值项,生成对应的完整条目。下面是一个可以直接用的Bash脚本方案,附带详细说明:

完整脚本代码

#!/bin/bash

# 处理输入:无参数时从标准输入读取,有参数则用传入的字符串
if [[ $# -eq 0 ]]; then
    input=$(cat)
else
    input="$1"
fi

# 将输入中的$替换为换行,同时清理首尾空格,方便逐行处理
processed_input=$(echo "$input" | sed -e 's/\$/\n/g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')

# 逐行解析每一组年份+标识数据
echo "$processed_input" | while IFS=' ' read -r year identifier; do
    # 跳过空行或无效条目
    [[ -z "$year" || -z "$identifier" ]] && continue

    # 拆分标识字符串:提取固定前缀和区间部分
    prefix=$(echo "$identifier" | awk -F'/' '{print $1"/"}')
    range_str=$(echo "$identifier" | awk -F'/' '{print $2}')

    # 拆分区间为起始和结束数字
    start=$(echo "$range_str" | awk -F'-' '{print $1}')
    end=$(echo "$range_str" | awk -F'-' '{print $2}')

    # 验证区间有效性,避免非数字或反向区间
    if ! [[ "$start" =~ ^[0-9]+$ && "$end" =~ ^[0-9]+$ && "$start" -le "$end" ]]; then
        echo "Warning: Invalid range in '$identifier', skipping this entry." >&2
        continue
    fi

    # 循环生成所有展开后的条目
    for ((i=start; i<=end; i++)); do
        echo -n "$ $year ${prefix}${i} "
    done
done

# 最后补一个换行,让输出格式更整洁
echo

使用方法

你可以通过三种方式运行这个脚本:

  • 直接传入输入字符串
./expand_data.sh "$ 2001 xei_1/2-10 $ 2002 xei_2/3-7 "
  • 从文件读取输入
    如果你的数据存在文件(比如data.txt)中,直接通过管道传入:
./expand_data.sh < data.txt
  • 管道传递输入
    结合echo或其他命令的输出作为输入:
echo "$ 2001 xei_1/2-10 $ 2002 xei_2/3-7 " | ./expand_data.sh

关键逻辑说明

  • 输入预处理:把输入中的$替换为换行,让每一组年份 标识单独成行,同时清理多余空格,避免空行干扰解析。
  • 标识拆分:用awk按/分割标识字符串,分离出固定前缀(比如xei_1/)和区间部分(比如2-10);再按-拆分区间得到起始和结束数字。
  • 有效性校验:检查起始/结束是否为有效数字,且起始不大于结束,避免无效区间导致脚本报错。
  • 条目生成:通过for循环遍历区间内的每个数字,逐个生成符合要求的条目,用echo -n保持所有条目在同一行输出。

测试效果

输入你的示例数据后,脚本会输出:

$ 2001 xei_1/2 $ 2001 xei_1/3 $ 2001 xei_1/4 $ 2001 xei_1/5 $ 2001 xei_1/6 $ 2001 xei_1/7 $ 2001 xei_1/8 $ 2001 xei_1/9 $ 2001 xei_1/10 $ 2002 xei_2/3 $ 2002 xei_2/4 $ 2002 xei_2/5 $ 2002 xei_2/6 $ 2002 xei_2/7 

完全匹配你期望的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:34:56