如何使用sed命令处理tRNA.fa文件,保留指定格式的序列头部及序列行
解决tRNA.fa文件的sed处理问题
我来帮你搞定这个需求!你需要的是只保留>tRNA-XXX-XXX-X-X格式的行头,同时保留对应的序列行,正确的sed命令如下:
sed -i 's/^\(>tRNA-[^ ]*\).*/\1/' tRNA.fa
为什么你之前的命令不行?
你之前用的sed -i 's/\(.*\).*[0-9]$//g' tRNA.fa逻辑有问题:这个命令会匹配行内任意内容直到末尾的数字,然后把整个匹配内容替换为空,直接把所有以>开头的行都清空了,完全不符合你的需求。
新命令的工作原理
拆解一下这个命令的各个部分:
^:锚定行的开头,确保我们只处理以>开头的行(也就是序列头行)\(>tRNA-[^ ]*\):这是一个捕获组,[^ ]*表示匹配任意非空格字符,所以会精准捕获从>tRNA-开始到第一个空格之前的所有内容,也就是你想要保留的>tRNA-Ala-AGC-1-1这类格式.*:匹配该行捕获组之后的所有剩余内容(也就是括号及后面的所有冗余信息)\1:将整行替换为之前捕获组里的内容,也就是保留我们需要的行头,删掉冗余部分- 非
>开头的序列行不会被这个命令匹配,所以会原封不动保留
执行这个命令后,你的tRNA.fa文件就会变成你期望的样子:
tRNA-Ala-AGC-1-1
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC CCCATACCTCCA
tRNA-Ala-AGC-1-10
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC CCCATACCTCCA
tRNA-Ala-AGC-1-11
GGGGGTATAGCTCAGTGGTAGAGCGCTCCCTTAGCATGGGAGAGGgCTGGGGTTCAATTC CCCATACCTCCA
内容的提问来源于stack exchange,提问作者Katniss Dong
相关产品推荐
相关产品推荐

