管道结果到perl命令

时间:2014-03-16 08:45:09

标签: regex perl

这可能是一个简单的问题,但我对perl命令并不熟悉。我想将剪切命令的结果传递给perl命令。

cut -f 1 file | perl -ne '$on=(/^>matching_pattern/) if (/^>/); print $_ if $on;' multiple_fasta_file > results.txt

命令说明

  1. 剪切文件的第一列(结果将是一个字符串,如:lcl | NC_017656.1_gene_2723
  2. 提取以>开头的fasta序列和一个匹配模式,它是cut_命令的结果:lcl | NC_017656.1_gene_2723)in multiple_fasta_file
  3. Multiple_fasta_sequence:

    > LCL | NC_017656.1_gene_2722 ACTCCCCGTGCGCGCCCGGCCCGTAGCGTCCTCGTCGCCGCCCCTCGTCTCGCAGCCGCAGCCCGCGTGGACGCTCTCGCCTGAGCGCCGCGGACTAGCCCGGGTGGCC
    > LCL | NC_017656.1_gene_2723 CAGTCCGGCAGCGCCGGGGTTAAGCGGCCCAAGTAAACGTAGCGCAGCGATCGGCGCCGGAGATTCGCGAACCCGACACTCCGCGCCGCCCGCCGGCCAGGACCCGCGGCGCGATCGCGGCGCCGCGCTACAGCCAGCCTCACTGGCGCGCGGGCGAGCGCACGGGCGCTC
    > LCL | NC_017656.1_gene_2724 CACGACAGGCCCGCTGAGGCTTGTGCCAGACCTTGGAAACCTCAGGTATATACCTTTCCAGACGCGGGATCTCCCCTCCCC

    切割结果:lcl | NC_017656.1_gene_2723 perl的结果:                                                                                                                                                                                                                                                                                                                                                                                                                                               > LCL | NC_017656.1_gene_2723 CAGTCCGGCAGCGCCGGGGTTAAGCGGCCCAAGTAAACGTAGCGCAGCGATCGGCGCCGGAGATTCGCGAACCCGACACTCCGCGCCGCCCGCGGCCAGGACCCGCGGCGCGATCGCGGCGCCGCGCTACAGCCAGCCTCACTGGCGCGCGGGCGAGCGCACGGGCGCTC

    可以在不声明变量的情况下执行此操作吗?

1 个答案:

答案 0 :(得分:0)

这是一个糟糕的答案,因为它是一个问题 你的意思不是吗?

cut -f 1 multiple_fasta_file | perl -ne '$on = 1 if /^>\?\?\?/; print if $on' > results.txt
  • 刚刚阅读multiple_fasta_file
  • 如果是文字问号,你必须逃避它们(?是零或一个正则表达式量词)
  • 仅检查/^>/
  • 一次
  • 删除不必要的标点以提高可读性