我正在尝试对我拥有的超长文件进行排序,在同一行中有一些基因的信息,但是我希望它们出现在多行中,就像这样:
setupTableview()
但是我想要的是:
Gene1 A, B, C
Gene2 A
Gene3 A, B
我可以轻松地用sed或tr用换行符替换逗号,但是我不确定如何保留第一列中的基因名称
有什么提示吗?
答案 0 :(得分:0)
这里是单线:
awk -F "[, \t][ \t]*" '{ first=$1; for(i=2; i<=NF; i++) printf "%s\t%s\n", first, $i; }' inputfile
从您的示例中,我猜想字段可以用逗号分隔,后跟制表符或空格,或仅一系列制表符或空格。这就是为什么我使用选项-F
将字段分隔符设置为正则表达式的原因。
对于输出,我使用制表符将第一个单词与另一个单词分开。
如果文件仅包含一个单词的行,则脚本将不为该行打印任何内容。