text-processing - 有没有办法通过合并重复项和制表符非重复项来将多行解析为单行?
问题描述
我在格式化这样的列表时遇到问题:
问题:
XYZ gene1
XYZ gene2
GHE ATG01
GHE ATG02
目标(制表符分隔的空格):
XYZ gene1 gene2
GHE ATG01 ATG02
我尝试了ruby -F -ane '$F[1].split(/\t/).each {|x|print [$F [0],x,$F[2]]*"\t"
, xargs
, 和paste
命令,但后来被困在弄清楚它是如何工作的,并且 ruby 命令是创建多行,而不是单行。我也是命令行文本处理的新手。
这就是我实际处理的(以及更多):
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
我希望得到这个:
14-3-3 proteins AT1G22300 AT1G26480 AT1G34760 AT1G35160
ZIK subfamily AT1G64630 AT3G04910 AT3G18750
这就是我得到的:
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
解决方案
与米勒(https://github.com/johnkerl/miller/releases/tag/5.4.0)
mlr --nidx --ofs "\t" nest --nested-fs " " --implode --values --across-records -f 3 input.csv
您有(选项卡作为字段分隔符,空格作为嵌套值的字段分隔符)
14-3-3 proteins AT1G22300 AT1G26480 AT1G34760 AT1G35160
ZIK subfamily AT1G64630 AT3G04910 AT3G18750
作为输入,我使用了这个(空格分隔)
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
推荐阅读
- android - 在 Binding 中创建 setOnClickListener
- sql - ORACLE NLS_LANG
- java - If 不执行,除非使用 System.out.println 或在调试时
- css - How to sharpen more div border using CSS?
- python - 包中的 Python 疯狂模块导入
- php - CodeIgniter - 使用表单上传文件
- javascript - 我如何(在 D3 中)使一个矩形改变它的大小,同时保持在一个点上?
- python - 结合同一数据集的张量矩阵和稀疏矩阵来分割数据
- javascript - 滑动工具元素,被点击
- javascript - 有没有办法改变按键上按钮的css?