AWK を使用して、csv ファイルの単一キーに対応する複数の値をグループ化します。

AWK を使用して、csv ファイルの単一キーに対応する複数の値をグループ化します。

単一のキーに対応する値をグループ化するときに、2つ以上のフィールドを持つcsv形式のファイルでこれを試しました。たとえば、次のようになります。

Keyobject,FieldName,Fieldvalue
1,are you sleeping,yes
1,country of meeting,USA 
2,are you sleeping,' '
2,country of meeting,' '
3,are you sleeping,yes
3,country of meeting,CHINA
4,are you sleeping,yes
4,country of meeting,ITALY

予想出力:

Keyobject,Are you sleeping,country of meeting
1,yes,USA
2, ,
3,yes,CHINA
4,no,ITALY.

おおよそのアイデアやスクリプトを提供してください。

ベストアンサー1

awk -F, '
    NR > 1 {ids[$1]; keys[$2]; value[$1,$2] = $3}
    END { 
        printf "Keyobject"
        for (k in keys)
            printf ",%s", k
        print ""

        for (id in ids) {
            printf id
            for (k in keys)
                printf ",%s", value[id,k]
            print ""
        }
    }
' file

おすすめ記事