linux sed命令,只要第一个空格之后的部分,并显示出来 22
16紫浕胆.fna:>NM_001172052 Strongylocentrotus purpuratus
16紫浕胆.fna:>NM_214531 Strongylocentrotus purpuratus
我就是想把第一个空格前面的都删了,只要后面的。
最后我在linux的结果希望是
Strongylocentrotus purpuratus
Strongylocentrotus purpuratus
Strongylocentrotus purpuratus 展开
问题过去好长时间了,不知道楼主问题解决了没有,刚刚试了一下,参考了之前yss624给的答案,楼主可以试一下:
echo "16紫浕胆.fna:>NM_001124764 Strongylocentrotus purpuratus" | sed -r 's/^[^ ]* *//g'
echo "16紫浕胆.fna:>NM_001172052 Strongylocentrotus purpuratus " | sed -r 's/^[^ ]* *//g'
echo "16紫浕胆.fna:>NM_214531 Strongylocentrotus purpuratus " | sed -r 's/^[^ ]* *//g'
下面是结果截图:
-r 选项是让sed支持POSIX拓展正则表达式(ERE)
就楼主的问题好像不加也是可以的
's/^[^ ]* *//g 分块说一下:
"[^ ]" 非空格字符,那么 "^[^ ]" 也就是匹配第一个非空格字符了
"^[^ ]* " 就是匹配第一个空格之间的所有非空格字符(注意 * 后有一个空格)
"^[^ ]* *" 最后面又加了一个 * 是以防多个空格的出现,加上后哪怕第一个空格后还有空格也会被替换掉
后面的 //g 就是简单地替换为空字符了
不知道这样说好不好理解,测试了几个用例,若有例外请楼主贴一下
我用投机取巧的方式给你一个, 你自己看着办: sed "s/.*[:digit:] //g "
Strongylocentrotus purpuratus
Strongylocentrotus purpuratus
Strongylocentrotus purpuratus
有点low 随便写的
采纳我的吧。。
能大体解释一下么,大神