删除特定模式 Unix

删除特定模式 Unix

我有一个看起来像这样的字符串:

Root;rootrank;Bacteria;domain;"Actinobacteria";phylum;Actinobacteria;class;Acidimicrobidae;subclass;Acidimicrobiales;order;"Acidimicrobineae";suborder;Acidimicrobiaceae;family;Acidimicrobium;genus 

我想删除这个

root; rootrank; domain; phylum; class; subclass;order;suborder;family;genus

但我在 sed 上遇到了很多困难

答案1

printf "%s\n" \
  "Root;rootrank;Bacteria;domain;"Actinobacteria";phylum;Actinobacteria;class;Acidimicrobidae;subclass;Acidimicrobiales;order;"Acidimicrobineae";suborder;Acidimicrobiaceae;family;Acidimicrobium;genus" \
  | sed -e 's/Root;//' \
        -e 's/rootrank;//' \
        -e 's/domain;//' \
        -e 's/phylum;//' \
        -e 's/class;//' \
        -e 's/subclass;//' \
        -e 's/order;//' \
        -e 's/suborder;//' \
        -e 's/family;//' \
        -e 's/genus//'

给你:

Bacteria;Actinobacteria;Actinobacteria;Acidimicrobidae;Acidimicrobiales;Acidimicrobineae;Acidimicrobiaceae;Acidimicrobium;

您可以将多个sed命令链接在一起。 -e 's/foo/bar/'意思是“替换foobar”,但在我们的例子中,我们只是简单地替换了任何内容(所以我们实际上只是删除了foo)。

相关内容