Bash脚本OSX:splitcsv

Bash脚本OSX:splitcsv,bash,macos,shell,Bash,Macos,Shell,我将此字符串存储在一个文件中: ID1,A,B,,,,F ID2,,,,D,E,F ID3,,B,C,,,, 我需要这样转变: ID1,A ID1,B ID1,F ID2,D ID2,E ... 我尝试了使用循环和IFS(比如IFS=“,”declare-Array=($*)),但没有成功 有人知道怎么做吗?在Awk中非常直截了当 awk-F'{for(i=2;我为我工作!谢谢you@PS.:我明白你的意思了,但由于这是一个循环之外的任务,我认为这项任务与直接打印$1没有任何区别。尽管如此,

我将此字符串存储在一个文件中:

ID1,A,B,,,,F
ID2,,,,D,E,F
ID3,,B,C,,,,
我需要这样转变:

ID1,A
ID1,B
ID1,F
ID2,D
ID2,E
...
我尝试了使用循环和IFS(比如IFS=“,”declare-Array=($*)),但没有成功


有人知道怎么做吗?

在Awk中非常直截了当


awk-F'{for(i=2;我为我工作!谢谢you@PS.:我明白你的意思了,但由于这是一个循环之外的任务,我认为这项任务与直接打印
$1
没有任何区别。尽管如此,还是要感谢您的反馈!@PS。即使在这里,我也只是想了解这项任务对性能有多大的改善。而这段代码片段可能会解决这个问题,这确实有助于提高您的帖子质量。请记住,您将在将来为读者回答这个问题,而这些人可能不知道您的代码建议的原因。现在添加了一个解释。但是没有什么值得解释的严重问题;-)
awk 'BEGIN{FS=OFS=","}{first=$1; for (i=2;i<=NF;i++) if (length($i)) print first,$i}' file
awk -F, '{for(i=2;i<=NF;i++) if(length($i)) print $1 FS $i}' file
awk -F, '{for (i=2; i<=NF; i++) if($i != "") print $1","$i}' File

ID1,A
ID1,B
ID1,F
ID2,D
ID2,E
ID2,F
ID3,B
ID3,C