我有两个文本文件,一个包含患者 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
使用
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
将逐行合并两个文件。
希望有帮助。