soo*_*sus 1 bash perl sequence
我想写一个快速的单行perl脚本来产生DNA序列的反向互补.但是,以下内容对我不起作用:
$ cat sample.dna.sequence.txt | perl -ne '{while (<>) {$seq = $_; $seq =~ tr /atcgATCG/tagcTAGC/; $revComp = reverse($seq); print $revComp;}}'
Run Code Online (Sandbox Code Playgroud)
有什么建议?我知道
tr -d "\n " < input.txt | tr "[ATGCatgcNn]" "[TACGtacgNn]" | rev
Run Code Online (Sandbox Code Playgroud)
在bash中工作,但是我想用perl来做这个练习.
你的问题是,是,您同时使用-n和while (<>) { },所以你最终while (<>) { while (<>) { } }.
如果你知道该怎么做<file.txt,为什么要切换到cat file.txt|?!
perl -0777ne's/\n //g; tr/ATGCatgcNn/TACGtacgNn/; print scalar reverse $_;' input.txt
Run Code Online (Sandbox Code Playgroud)
要么
perl -0777pe's/\n //g; tr/ATGCatgcNn/TACGtacgNn/; $_ = reverse $_;' input.txt
Run Code Online (Sandbox Code Playgroud)
或者,如果您不需要删除换行符:
perl -pe'tr/ATGCatgcNn/TACGtacgNn/; $_ = reverse $_;' input.txt
Run Code Online (Sandbox Code Playgroud)