【发布时间】:2016-04-23 22:16:10
【问题描述】:
我正在尝试在数千行的文件中查找所有出现的字母字符串。然后我将计算每个字符串。下面的示例文件仅包含两行,但该文件中的所有文本都是相同的结构(其中> 表示新行,而字母字符串是要搜索的位置。截至目前,我将整个文件作为输出返回不仅仅是我要找的字符串。谢谢:)。
文件
>hg19_refGene_NM_000016 range=chr1:76190032-76229363 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GGGTTCGGGCGATGCTGCAGGgtgagagggagcccagcggtgcggtgggg
g 的期望输出{4}
gggg
g 的期望输出{3}
GGG
GGG
ggg
ggg
Perl 我试过了
({...} 之间的4 是要搜索的qw(G g) 的数量)
cat file.txt | perl -ne 'chomp; s/\s|\cJ|\cM//g; s/^\>/\n/ and $_.="\t";print' | perl -ne '$in=$_;grep $in=~m/$_{4}/i, qw(G g) and print' > test.txt
编辑
>hg19_refGene_NM_000016 range=chr1:76190032-76229363 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GGGTTCGGGCGATGCTGCAGGgtgagagggagcccagcggtgcggtgggg
>hg19_refGene_NM_001282675 range=chr11:35453376-35551848 5'pad=0 3'pad=0 strand=- repeatMasking=none
TTCATTAGGGCTGGAGACTTCCATGAAGGGGCCAGTTACAGCAGGCTCCA
多个输出(搜索所在的行并输出)
>hg19_refGene_NM_000016 range=chr1:76190032-76229363 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GGG
GGG
GGg
ggg
ggg
>hg19_refGene_NM_001282675 range=chr11:35453376-35551848 5'pad=0 3'pad=0 strand=- repeatMasking=none
GGG
GGG
GGG
我得到多个输出
perl -076 -nE 'chomp; s/(.+)// && say qq{>$1}; s/\s//g; say $1 while /(g{3})/gi' 4G.txt
>hg19_refGene_NM_000016 range=chr1:76190032-76229363 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GGG
GGG
GGg
ggg
ggg
>hg19_refGene_NM_001282675 range=chr11:35453376-35551848 5'pad=0 3'pad=0 strand=- repeatMasking=none
GGG
GGG
【问题讨论】:
-
您的样本序列中间有一个
GGg。这不算吗?当文件中有多个序列时,你想要什么输出?
标签: perl