【问题标题】:Getting different output files获取不同的输出文件
【发布时间】:2014-02-05 16:36:00
【问题描述】:

我正在使用这些文件进行测试:

comp900_c0_seq1_Glicose_1_ACTTGA_merge_R1_001.fastq
comp900_c0_seq1_Glicose_1_ACTTGA_merge_R2_001.fastq
comp900_c0_seq2_Glicose_1_ACTTGA_merge_R1_001.fastq
comp900_c0_seq2_Glicose_1_ACTTGA_merge_R2_001.fastq
comp995_c0_seq1_Glicose_1_ACTTGA_merge_R2_001.fastq
comp995_c0_seq1_Xilano_1_AGTCAA_merge_R1_001.fastq
comp995_c0_seq1_Xilano_1_AGTCAA_merge_R2_001.fastq

我想获取在第一个 _(下划线)之前具有相同代码的文件,并将代码 R1 放在不同的输出文件中。输出文件应该按照代码调用,直到第一个_(下划线)。

-这是我的代码,但我在制作输出文件时遇到了麻烦。

#!/bin/bash

for i in {900..995}; do
    if [[ ${i} -eq ${i} ]]; then
        cat comp${i}_*_R1_001.fastq
    fi
done

-我想要两个输出:

一个输出将包含以下所有行:

comp900_c0_seq1_Glicose_1_ACTTGA_merge_R1_001.fastq
comp900_c0_seq2_Glicose_1_ACTTGA_merge_R1_001.fastq

它的名字应该是comp900_R1.out

另一个输出将包含以下行:

comp995_c0_seq1_Xilano_1_AGTCAA_merge_R1_001.fastq

它的名字应该是comp995_R1.out

最后,正如我所说,这是一个小测试。我希望我的脚本能够处理许多具有相同特征的文件。

【问题讨论】:

  • 只是出于好奇:为什么需要这个条件:if [[ ${i} -eq ${i} ]]; then
  • 而且,看来你只需要comp${i}
  • 您对这个问题的期望是什么?
  • 我期待有两个文件:第一个将有 comp900_c0_seq1_Glicose_1_ACTTGA_merge_R1_001.fastq 和 comp900_c0_seq2_Glicose_1_ACTTGA_merge_R1_001.fastq。第二个将有 comp995_c0_seq1_Xilano_1_AGTCAA_merge_R1_001.fastq。
  • 也许我看错了你的问题。我以为你想将文件连接成新文件comp900comp995 等?

标签: bash output fastq


【解决方案1】:

使用awk

ls -1 *.fastq | awk -F_ '$8 == "R1" {system("cat " $0 ">>" $1 "_R1.out")}'

列出所有文件*.fastqawk,在_ 上拆分。检查第8部分$8是否为R1,然后将cat >>文件附加到第一部分$1 + _R1.out,即comp900_R1.outcomp995_R1.out。假定文件名不包含空格或其他特殊字符。

结果:

文件 comp900_R1.out 包含来自

的所有行
comp900_c0_seq1_Glicose_1_ACTTGA_merge_R1_001.fastq
comp900_c0_seq2_Glicose_1_ACTTGA_merge_R1_001.fastq

和文件comp995_R1.out 包含来自

的所有行
comp995_c0_seq1_Xilano_1_AGTCAA_merge_R1_001.fastq

【讨论】:

    【解决方案2】:

    我对一般解决方案的尝试:

    #!/bin/bash
    
    for f in *_R1_*; do
       code=$(echo $f | cut -d _ -f 1)
       cat $f >> ${code}_c0_seq1_Glicose_1_ACTTGA_merge_R1_001.fastq
    done
    

    遍历包含_R1_ 的文件,然后将其输出附加到基于code 的文件中。

    cut 通过拆分文件名 (-d _) 并返回第一个字段 (-f 1) 来提取代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      相关资源
      最近更新 更多