用新行替换逗号,但保留第一列

时间:2019-01-15 12:48:14

标签: linux

我正在尝试对我拥有的超长文件进行排序,在同一行中有一些基因的信息,但是我希望它们出现在多行中,就像这样:

setupTableview()

但是我想要的是:

Gene1    A,    B,    C
Gene2    A
Gene3    A,    B

我可以轻松地用sed或tr用换行符替换逗号,但是我不确定如何保留第一列中的基因名称

有什么提示吗?

1 个答案:

答案 0 :(得分:0)

这里是单线:

awk -F "[, \t][ \t]*" '{ first=$1; for(i=2; i<=NF; i++) printf "%s\t%s\n", first, $i; }' inputfile

从您的示例中,我猜想字段可以用逗号分隔,后跟制表符或空格,或仅一系列制表符或空格。这就是为什么我使用选项-F将字段分隔符设置为正则表达式的原因。

对于输出,我使用制表符将第一个单词与另一个单词分开。

如果文件仅包含一个单词的行,则脚本将不为该行打印任何内容。