这对我来说似乎是一项简单的任务,但是让它轻松上班最终会比我想象的更难:
我有一个包含数百万行文本的fasta文件(只有几百个单独的序列条目),这些序列名称很长,我想用>
替换标题Contig $n
之后的所有字符,其中$n
是一个从1开始的整数,并且每次替换都会递增。
示例输入序列名称:
>NODE:345643RD:Cov_456:GC47:34thgd
ATGTCGATGCGT
>NODE...
ATGCGCTTACAC
然后我想输出这样的
>Contig 1
ATGTCGATGCGT
>Contig 2
ATGCGCTTACAC
所以也许是Perl脚本?我知道一些基础知识,但我想读一个文件然后输出新文件的变化,我不确定最好的方法吗?我看过Perl的一些衬垫示例,但没有一个做我想要的。
$n = 1
if {
s/>.*/(Contig)++$n/e
++$n
}
答案 0 :(得分:1)
$ awk '/^\\>/{$0="\\>Contig "++n} 1' file
\>Contig 1
ATGTCGATGCGT
\>Contig 2
ATGCGCTTACAC
答案 1 :(得分:0)
尝试这样的事情:
<div id="reg_mem_type" class="form-row form-row-wide"> <label for="reg_mem_type">'Member Type' </label>
<select id="reg_mem_type" name="mem_type" value="'.esc_attr($_POST['mem_type']).'">
<option value="ARENA">ARENA</option>
<option value="ARO">ARO</option>
<option value="BUILD">BUILD</option>
<option value="RM">RM</option>
<option value="CLUBINS">CLUBINS</option>
<option value="AFFL">AFFL</option>
<option value="HOCKEY">HOCKEY</option>
<option value="HOCKEYA">HOCKEYA</option>
<option value="PRO">PRO</option>
<option value="SKATER">SKATER</option>
<option value="WE">WE</option>
<option value="LINS">LINS</option>
<option selected disabled value="Member">Member Type</option>
</select>
</div>
<div class="member-type bs-member-type form-row form-row-wide"> <h2>personal info</h2></div>
<div class="member-type bs-member-type form-row form-row-wide"><label for="reg_first_name">'.__('First Name', 'woocommerce').'</label>
<input type="text" class="input-text" name="first_name" id="reg_first_name" size="10" value" '.esc_attr($_POST['first_name']).'" /></div>
<div class="member-type bs-member-type form-row form-row-wide"><label for="reg_last_name">'.__('Last Name', 'woocommerce').'</label>
<input type="text" class=" input-text" name="last_name" id="reg_last_name" size="10" value" '.esc_attr($_POST['last_name']).'" /></div>
<div class="arena-member-type bs-member-type form-row form-row-wide"> <h2>company info</h2></div>
<div class="bs-member-type arena-member-type form-row form-row-wide"> <label for="reg_website">'.__('Website' , 'woocommerce').'</label>
<input type="text" class="input-text" name="website" id="reg_website" value" '.esc_attr($_POST['website']).'"/></div>
<div class="arena-member-type bs-member-type form-row form-row-wide"> <label for="reg_fax">'.__('Fax' , 'woocommerce').'</label>
<input type="text" class="input-text" name="fax_num" id="reg_fax" value" '.esc_attr($_POST['fax_num']).'"/></div>
答案 2 :(得分:0)
我不是awk专家(远非如此),但仅仅因为好奇而解决了这个问题,因为sed不包含变量(有限的可能性)。
一种可能的gawk解决方案可能是
awk -v n=1 '/^>/{print ">Contig " n; n++; next}1' <file
答案 3 :(得分:0)
perl -i -pe 's/>.*/">Contig " . ++$c/e;' file.txt
输出:
\>Contig 1
ATGTCGATGCGT
\>Contig 2
ATGCGCTTACAC
答案 4 :(得分:0)
当您使用/e
修饰符时,Perl希望替换模式是有效的Perl表达式。尝试像
s/>.*/">Contig " . ++$n/e