列値に基づいてCSVの行を集計する方法

列値に基づいてCSVの行を集計する方法

私の入力は、次のようにソートされたCSVファイルです(:通常のカンマではなくフィールド区切り文字として使用されます)。

version:device
1.0.0:dev1
1.0.0:dev2
1.2.3:dev3
1.3.4:dev4
1.3.4:dev5

各バージョンが1行になるように集計したいと思います。

version:devices
1.0.0:dev1,dev2
1.2.3:dev3
1.3.4:dev4,dev5

ベストアンサー1

GNUを使用して、datamashコロンで区切られた最初のフィールドにグループ化し、2番目のフィールドを折りたたみます。

$ datamash -t : groupby 1 collapse 2 <file
version:device
1.0.0:dev1,dev2
1.2.3:dev3
1.3.4:dev4,dev5

おすすめ記事