【发布时间】:2015-01-29 10:04:16
【问题描述】:
我有一个文件,其中第一行包含一系列字段,制表符分隔 (\t)。我正在尝试遍历这些行并将某些字段用作程序的变量。我到目前为止的代码如下:
{
A=$(head -1 id_table.txt)
read;
while IFS='\t' read $A;
do
echo 'downloading '$SRA_Sample_s
echo $tissue_s
#out_dir=`echo $tissue_s | sed 's/ /./g'` #Replacing spaces by dots
#/soft/bio/sequence/sratoolkit-2.3.4-2/bin/fastq-dump.2.3.4 --split-3 --outdir $out_dir --ncbi_error_report $SRA_Sample_s
done
} <./id_table.txt
输出(错误):
downloading _s Inser
downloading provided> <no
downloading provided> <no
downloading provided> <no
它失败了,因为它没有正确获取字段。也许<> 字符正在制造混乱?不同文件的列名称排序不同,并且某些文件中缺少某些列。我被困在这里。
文件如下所示:
BioSample_s MBases_l MBytes_l Run_s SRA_Sample_s Sample_Name_s age_s breed_s sex_s Assay_Type_s AssemblyName_s BioProject_s BioSampleModel_s Center_Name_s Consent_s InsertSize_l Library_Name_s Platform_s SRA_Study_s biomaterial_provider_s g1k_analysis_group_s g1k_pop_code_s source_s tissue_s
SAMN02777951 4698 3249 SRR1287653 SRS607026 SL01 19 SL01 female RNA-Seq <not provided> PRJNA247712 Model organism or animal SICHUAN UNIVERSITY public 200 <not provided> ILLUMINA SRP041998 Chengdu Research Base of Giant Panda Breeding <not provided> <not provided> <not provided> blood
SAMN02777952 4451 3063 SRR1287654 SRS607028 XB01 12 XB01 male RNA-Seq <not provided> PRJNA247712 Model organism or animal SICHUAN UNIVERSITY public 200 <not provided> ILLUMINA SRP041998 Chengdu Research Base of Giant Panda Breeding <not provided> <not provided> <not provided> blood
SAMN02777953 4553 3139 SRR1287655 SRS607025 XB02 6 XB02 female RNA-Seq <not provided> PRJNA247712 Model organism or animal SICHUAN UNIVERSITY public 200 <not provided> ILLUMINA SRP041998 Chengdu Research Base of Giant Panda Breeding <not provided> <not provided> <not provided> blood
【问题讨论】:
-
IFS='\t'没有按照您想要的方式工作。这是由t分隔的。使用IFS=$'\t'来使用标签。这就是为什么你会收到_s Inser等。 -
我明白了!那行得通!谢谢。如果您将其发布为答案,我会接受。
-
bioji:你必须写@username 来通知用户你在说些什么。 (例如:@Etan)
标签: bash sed while-loop separator fastq