如何循环嵌套循环,以便主循环和嵌套循环可以并行

问题描述 投票:0回答:1

我有两个文本文件,一个包含患者 ID (subjects.txt),另一个包含一些测量值 (number_of_slices.txt)。两个文本文件仅包含 1 列。

在第三个文件 (.xmlg) 中,我放置了特定的单词(例如,number_of_brain_slices),我希望将其自动替换为第一个患者 ID 和第一个测量值,然后是第二个患者 ID 和第二个测量值。但是,在当前循环中,我使用不同的病人 ID 但使用相同的度量(切片数量)生成这些 .xmlg 文件,因为我不知道如何编写嵌套循环并使其每次增加 1 个位置,因此患者和测量并行进行 - 第二个患者 - 第二个测量,第三个患者 - 第三个测量,依此类推。 有谁知道如何在 bash 中做到这一点?

#!bin/bash

for sub in `cat subjects.txt`
do 
    for f in `cat number_of_slices.txt`
    do 
    sed -i "s/number_of_brain_slices/${f}/g" \
           /data/mri_measures/analysis/set_files/${sub}.xmlg;
    done
done

bash loops nested
1个回答
0
投票

使用

paste
命令的建议:

paste subjects.txt number_of_slices.txt \
| while read -r ID Measure
  do    sed -i "s/number_of_brain_slices/${Measure}/g" \
               "/data/mri_measures/analysis/set_files/${ID}.xmlg"
  done

paste file1 file2
将逐行合并两个文件。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.