发现自己对
sed
/awk
的熟悉度还是不够,有时候问题都描述的不正确,这就很难搜到想要的代码.
问题描述
当我在处理多个基因组文件时,由于fasta的header中标注染色体的字段都是数字,就会导致无法正确识别特定物种染色体的问题
>chr1
TGGGCAATG
GGAATCA
TGGACAGT
...
>chr2
TTTAACGG
CGCGATAT
GAGATCAGAC
...
因此,我想要在染色体数字的后面加上标识符,例如_mm
>chr1_mm
TGGGCAATG
GGAATCA
TGGACAGT
...
>chr2_mm
TTTAACGG
CGCGATAT
GAGATCAGAC
...
解决方案
通过sed
一句话就可以搞定
$ sed '/^>/s/ /_mm /' example.fa
其中:
/^>/
表示需要匹配的部分,也就是行首的>
s
表示执行替换操作
/ /
表示用空格作为字段分隔符
_mm
则是添加的字符
整体意思是匹配到行首为>
的行,在第一个字段末尾添加_mm
Ref:
replace specific column on matching line, then print other lines: https://stackoverflow.com/questions/40470194/awk-replace-specific-column-on-matching-line-then-print-other-lines
网友评论