代码之家  ›  专栏  ›  技术社区  ›  shams

多变量对同一数据的bash循环

  •  0
  • shams  · 技术社区  · 7 年前

    我试图使用bash循环使用多个变量创建模型。对于相同的数据,我需要使用不同的r2和p值截止来运行几个预测。r2和value参数是 cat parameters

    0.2 1
    0.2 5e-1
    0.2 5e-2
    0.2 5e-4
    0.2 5e-6
    0.2 5e-8
    0.4 1
    0.4 5e-1
    0.4 5e-2
    0.4 5e-4
    0.4 5e-6
    0.4 5e-8
    0.6 1
    0.6 5e-1
    0.6 5e-2
    0.6 5e-4
    0.6 5e-6
    0.6 5e-8
    0.8 1
    0.8 5e-1
    0.8 5e-2
    0.8 5e-4
    0.8 5e-6
    0.8 5e-8
    

    我正在使用的bash循环脚本 test.sh

    RSQ=$(cat parameters | awk '{print $1}')
    PVAL=$(cat parameters | awk '{print $2}')
    season=("spring summer fall winter")
    for i in $season;
    do
    echo prediction_${i}_${RSQ}_${PVAL}
    done
    

    目前的产出是

    prediction_spring_0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.4 0.4 0.6 0.6 0.6 0.6 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8_1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8
    prediction_summer_0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.4 0.4 0.6 0.6 0.6 0.6 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8_1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8
    prediction_fall_0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.4 0.4 0.6 0.6 0.6 0.6 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8_1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8
    prediction_winter_0.2 0.2 0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.4 0.4 0.6 0.6 0.6 0.6 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8_1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8 1 5e-1 5e-2 5e-4 5e-6 5e-8
    

    期望的输出是

    prediction_spring_0.2_1
    prediction_spring_0.2_5e-1
    prediction_spring_0.2_5e-2
    prediction_spring_0.2_5e-4
    prediction_spring_0.2_5e-6
    prediction_spring_0.2_5e-8
    prediction_spring_0.4_1
    .......
    prediction_winter_0.2_1
    prediction_winter_0.2_5e-1
    prediction_winter_0.2_5e-2
    prediction_winter_0.2_5e-4
    prediction_winter_0.2_5e-6
    prediction_winter_0.2_5e-8
    prediction_winter_0.4_1
    ..........
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   7 Reeds    7 年前

    您的示例输出不够完整。我可以想象两种解决方案:1)你打算每一季都与每一个rsq值配对,与每一个pval值配对;或2)你希望所述r/p对与季节配对。

    解决方案1:您需要循环查看R&P列表

    for i in $season; do
        for r in $RSQ; do
            for p in $PVAL; do
                echo prediction_${i}_${r}_${p}
            done
        done
    done
    

    解决方案2:逐行读取文件

    for i in $season; do
        while read r p; do
            echo prediction_${i}_${r}_${p}
        done < parameters
    done
    
    推荐文章