CSV処理:列/行値を列値が一致する別の行に移動する

CSV処理:列/行値を列値が一致する別の行に移動する

約50列のcsvファイルがあります。これは20から100行の間にあります。

各レコードにはIDがあり、一部のレコードは2つのグループにまとめることができます。基本的に私がすべきことは、グループ内の他のIDと同じ行にIDを追加することです。例:

ID     ,group,blank column
2019-1 ,     ,
2019-2 ,GRP1 ,
2019-3 ,GRP2 ,
2019-4 ,GRP1 ,
2019-5 ,     ,
2019-6 ,GRP2 ,

私が望む出力は次のとおりです。

ID     ,group,blank column
2019-1 ,     ,
2019-2 ,GRP1 ,2019-4
2019-3 ,GRP2 ,2019-6
2019-5 ,     ,

awkを使用しようとすると運がありません。グループなしで行が欠落しているか重複した値が発生します。

答え1

perl -a -F, -ne 'if($F[1]=~/\S/) { push @{$d{$F[1]}}, $F[0]; } else { print ; }
  END {
    for(keys %d){
      print shift @{$d{$_}},",$_, ",@{$d{$_}},"\n"
    }
  }' my.csv

関連情報