首页 > 解决方案 > 如何使用 unix 命令从 csv 文件中拆分特定列的值

问题描述

我有的数据

item     ids
358159   419463_I,528691_I,618536_I,768347_I,794716_I,802503_I,850094_I

358944   090169_I,398844_I,698490_I

结果我需要

item      ids
358159   419463_I
358159   528691_I
358159   618536_I
358159   768347_I
358159   794716_I
358159   802503_I
358159   850094_I
358944   090169_I
358944   398844_I

可以使用 unix 命令 awk 或 sed 对其进行格式化吗

标签: linuxshellunixsh

解决方案


awk -F[," "] 'NR==1 { printf "%s\t%s\n","itm","ids" } NR>1 { itm=$1;for (i=4;i<=NF;i++) { if ($NF!=" ") { print itm" "$i } } }' file

使用 awk,将字段分隔符设置为空格或逗号。当遇到第一条记录时,打印标题,否则,循环遍历字段,记下第一个字段(itm)并将其与字段一起打印在单独的行上。


推荐阅读