nev*_*int 11 unix linux bash sed
我有这样的数据行:
sp_A0A342_ATPB_COFAR_6_+_contigs_full.fasta
sp_A0A342_ATPB_COFAR_9_-_contigs_full.fasta
sp_A0A373_RK16_COFAR_10_-_contigs_full.fasta
sp_A0A373_RK16_COFAR_8_+_contigs_full.fasta
sp_A0A4W3_SPEA_GEOSL_15_-_contigs_full.fasta
如何sed为每行删除第4列(_分隔)后的部分字符串.最后屈服:
sp_A0A342_ATPB_COFAR
sp_A0A342_ATPB_COFAR
sp_A0A373_RK16_COFAR
sp_A0A373_RK16_COFAR
sp_A0A4W3_SPEA_GEOSL
Mat*_*hen 27
cut 是更合适的.
cut -d_ -f 1-4 old_file
这只是意味着使用_作为分隔符,并保留字段1-4.
如果你坚持sed:
sed 's/\(_[^_]*\)\{4\}$//'
这个左侧正好匹配一组的四个重复,由一个下划线后跟0个或多个非下划线组成.在那之后,我们必须在最后一行.这一切都没有被替换.