首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以通过合并重复项和使用way键将非重复项解析为一行?

有没有一种方法可以通过合并重复项和使用way键将非重复项解析为一行?
EN

Stack Overflow用户
提问于 2019-04-10 06:24:05
回答 1查看 21关注 0票数 1

我在格式化这样的列表时遇到了问题:

问题:

代码语言:javascript
复制
XYZ gene1
XYZ gene2
GHE ATG01
GHE ATG02

目标(制表符分隔的空格):

代码语言:javascript
复制
XYZ gene1 gene2
GHE ATG01 ATG02

我尝试了ruby -F -ane '$F[1].split(/\t/).each {|x|print [$F [0],x,$F[2]]*"\t"xargspaste命令,但在弄清楚它是如何工作的时候遇到了问题,而且ruby命令是用来生成多行的,而不是单行。我也是命令行文本处理的新手。

这就是我实际要处理的事情(还有更多):

代码语言:javascript
复制
14-3-3 proteins AT1G22300
14-3-3 proteins AT1G26480
14-3-3 proteins AT1G34760
14-3-3 proteins AT1G35160
ZIK subfamily AT1G64630
ZIK subfamily AT3G04910
ZIK subfamily AT3G18750

我希望得到这样的结果:

代码语言:javascript
复制
14-3-3 proteins AT1G22300 AT1G26480 AT1G34760 AT1G35160
ZIK subfamily AT1G64630 AT3G04910 AT3G18750

这是我得到的:

代码语言:javascript
复制
xargs -a <some_file> | sed 's/ /,/g'
14-3-3,proteins,AT1G22300,14-3-3,proteins,AT1G26480,14-3-3,proteins,AT1G34760,14-3-3,proteins,AT1G35160,14-3-3,proteins,AT1G78220,14-3-3,proteins,AT1G78300,14-3-3,proteins,AT2G42590,14-3-3,proteins,AT3G02520,14-3-3,proteins
EN

回答 1

Stack Overflow用户

发布于 2019-04-11 15:45:41

与米勒(https://github.com/johnkerl/miller/releases/tag/5.4.0)

代码语言:javascript
复制
mlr --nidx --ofs "\t" nest --nested-fs " " --implode --values --across-records -f 3 input.csv

你有(tab作为字段分隔符,空格作为嵌套值的字段分隔符)

代码语言:javascript
复制
14-3-3  proteins        AT1G22300 AT1G26480 AT1G34760 AT1G35160
ZIK     subfamily       AT1G64630 AT3G04910 AT3G18750

作为输入,我使用了这个(以空格分隔)

代码语言:javascript
复制
14-3-3 proteins AT1G22300
14-3-3 proteins AT1G26480
14-3-3 proteins AT1G34760
14-3-3 proteins AT1G35160
ZIK subfamily AT1G64630
ZIK subfamily AT3G04910
ZIK subfamily AT3G18750
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55602163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档