【发布时间】:2014-09-30 17:15:36
【问题描述】:
我有几个实验。每个实验都有几个复制文件。我想通过以下方式将所有这些复制文件放入一个文本文件中。
假设有 3 个实验,每个实验有 2 个复制文件。(实验和复制数可以多于此)
/home/data/study1/EXP1_30/EXP1_replicate_1_30.txt
/home/data/study1/EXP1_30/EXP1_replicate_2_30.txt
/home/data/study1/EXP1_60/EXP1_replicate_1_60.txt
/home/data/study1/EXP1_60/EXP1_replicate_2_60.txt
/home/data/study1/EXP2_30/EXP2_replicate_1_30.txt
/home/data/study1/EXP2_30/EXP2_replicate_2_30.txt
/home/data/study1/EXP2_60/EXP2_replicate_1_60.txt
/home/data/study1/EXP2_60/EXP2_replicate_2_60.txt
/home/data/study1/EXP3_30/EXP3_replicate_1_30.txt
/home/data/study1/EXP3_30/EXP3_replicate_2_30.txt
/home/data/study1/EXP3_60/EXP3_replicate_1_60.txt
/home/data/study1/EXP3_60/EXP3_replicate_2_60.txt
输出 file1.txt 看起来像
/home/data/study1/EXP1/EXP1_replicate_1_30.txt,/home/data/study1/EXP1/EXP1_replicate_2_30.txt \
/home/data/study1/EXP2/EXP2_replicate_1_30.txt,/home/data/study1/EXP2/EXP2_replicate_2_30.txt \
/home/data/study1/EXP3/EXP3_replicate_1_30.txt,/home/data/study1/EXP3/EXP3_replicate_2_30.txt
输出 file2.txt 看起来像
/home/data/study1/EXP1/EXP1_replicate_1_60.txt,/home/data/study/EXP1/EXP1_replicate_2_60.txt \
/home/data/study1/EXP2/EXP2_replicate_1_60.txt,/home/data/study1/EXP2/EXP2_replicate_2_60.txt \
/home/data/study1/EXP3/EXP3_replicate_1_60.txt,/home/data/study1/EXP3/EXP3_replicate_2_60.txt
....
我的带有 for 循环的代码:
ID=(30 60)
exp=("EXP1" "EXP2" "EXP3")
d=""
for txtfile in /home/data/study1/${exp[0]}/${exp[0]}*_${ID[0]}.txt
do
printf "%s%s" "$d" "$txtfile"
d=","
done
printf " \\"
printf "\n"
d=""
for txtfile in /home/data/study1/${exp[1]}/${exp[1]}*_${ID[0]}.txt
do
printf "%s%s" "$d" "$txtfile"
d=","
done
printf " \\"
printf "\n"
d=""
for txtfile in /home/data/study1/${exp[2]}/${exp[2]}*_${ID[0]}.txt
do
printf "%s%s" "$d" "$txtfile"
d=","
done
我为每个实验和复制都使用带有索引号的 for 循环,这非常耗时。有什么简单的方法吗?
【问题讨论】:
-
如果你想要那个输出,为什么你的实验首先输出那些文件?
-
@hek2mgl 那些输出文件来自另一个管道,我必须根据这些特定格式的 ID 一起处理所有文件
-
我永远无法理解为什么科学程序会产生科学家无法使用的输出,除非经过后处理。
-
您不能更改(或其他人)更改进程的输出以生成可以被许多不同应用程序轻松读取的文件吗?您不能将结果存储在数据库中吗?至少后者应该是正确的,有来自问题的信息。
-
@hek2mgl 不,它是一个众所周知的管道,许多其他科学家都在使用它,但我正在处理的研究要求我以不同的方式处理数据,这就是为什么我不能改变管道的方式已实施。
标签: bash