这是我的 1.file(分隔符是“\t”)
ot1 a a,b,c,d,e
ot2 b b,c,q
ot3 c c,f,g
ot4 e a,g,e
我想得到 2.file (分隔符是 "\t")
ot1 a a
ot1 a b
ot1 a c
ot1 a d
ot1 a e
ot2 b b
ot2 b c
ot2 b q
ot3 c c
ot3 c f
ot3 c g
ot4 e a
ot4 e g
ot4 e e
首先,我尝试了 "sed -i "s/,/\n/g",但我不知道下一步该做什么?感谢您的帮助。
像这样的东西可以做这项工作:
第一个制表分隔符需要双重转义
然后拆分第 3 个标记并获取拆分数组中的元素数
然后用拆分的元素替换循环中的第 3 个标记并打印
米勒会在这里工作:
解释
--tsv
- 使用制表符分隔值文件格式进行输入和输出-N
- 使用数字 ID 来处理字段,而不是标题名称nest
- 数据是嵌套的--explode
- 爆炸嵌套数据--values
- 嵌套数据是单个值--across-records
- 将分解的数据写入单独的记录--nested-fs
- 嵌套值的字段分隔符-f 3
- 根据字段编号爆炸。3