bash:将值提取到表中

  • 本文关键字:提取 bash bash
  • 更新时间 :
  • 英文 :


i有200个文本文件,每个大小约为10kb,均为fastqc_data.txt,每个命名为CC_1,每个分别在不同的子目录中。这些文件是由第三方生成的。每个文件的顶部如下所示。我的目的是生成一个新文件,第一列将包含"文件名"值(在此示例" 1265-H19_AGGCAG_L007_R1_001.FASTQ"中,第二列将包含"总序列"值(" 41284554"),,),,)第三列将包含"序列长度"(" 100")的值。

示例输入文件1:

FastQC 0.10.1  
Basic Statistics pass       
Measure        Value   
Filename        1265-H19_AGGCAG_L007_R1_001.fastq       
File type       Conventional base calls 
Encoding        Sanger / Illumina 1.9   
Total Sequences 41284554        
Filtered Sequences      0       
Sequence length 100     
%GC     41      
END_MODULE

示例输出文件:

Filename Total.Sequences Sequence.length  
1265-H19_AGGCAG_L007_R1_001.fastq 41284554 100  
1265-H20_TTTCAG_L007_R1_001.fastq 51387564 103  
1265-H21_CGGTTG_L007_R1_001.fastq 33254771 96

您可以使用这样的AWK脚本将输入转换为输出行:

awk 'BEGIN{print "Filename Total.Sequences Sequence.length"}
     /^Filename/{fn=$2}
     /^Total Sequences/{ts=$3}
     /^Sequence length/{print fn,ts,$3}' input_file

在处理文件的任何行之前,请执行BEGIN块。当匹配其他模式时,将将字段保存到变量fnts,以后使用。当最终模式匹配时,打印了行。

当然,这做出了许多假设,例如所有文件都以相同的顺序包含数据。

取决于目录结构的详细信息,并假设您的外壳支持它,您可能能够将所有文件传递给脚本,例如awk '...' **/fastqc_data.txt。这使用" GlobStar" shell功能将所有文件递归匹配,并将其全部传递给AWK脚本。

相关内容

  • 没有找到相关文章

最新更新