$ xtract -input my.xml -outline
xtract 可以灵活的改变数据的格式,所以涉及的参数也比较多。要想获得自己需要的数据格式,要想用好 edirect,掌握好 xtract 的用法是必不可少的。
-pattern 参数: 将 xml 格式数据,将转换成行格式数据。每一个element包含的数据做为一行。
xtract 命令首先要通过 -pattern 定义所要分析的数据级别。比如对于 pubmed 数据库,efetch 输出 -format 格式为 docsum,那么我们一般要抓取的是每一个命中的文献记录,-pattern 就可以用 DocumentSummary 元素。如果你只想知道所有命中文献的作者(比如按照次数排序),那么就可以直接将 -pattern 定义为 Author。
-element 参数: 将 -pattern 定义的行中以每个element形成一列。每个element以tab键分隔。
每个 -pattern 定义后,要多 -pattern 定义的元素的子元素进行输出,就要用到 -element 参数了。-element 可以跟多个子元素,默认以tab键分割。但是要注意的是子元素必须是唯一子元素,比如 -pattern 如果定义为 DocumentSummary,那么每个 DocumentSummary 元素有一个 Authors 子元素,而每个 Authors 有多个 Author 子元素(因为一篇文献有多个作者),如果直接将 -element Author,是无法返回作者信息的。需要用 -block 参数把 Authors 列转换成行再进行分割。
-block 参数: 可以将某个XML标签下的多个相同标签转换成一行的多个元素,最常见的用法是在 pubmed
数据库检索文献时下多个标签打印出来。