AWKを使用して行がほとんどない列に変換[重複]

AWKを使用して行がほとんどない列に変換[重複]

次の内容を含むテキストファイルがあります。

タイトル1 A1
タイトル3 A3
タイトル4 A4
タイトル5 A5

タイトル1 B1
タイトル2 B2
タイトル5 B5

タイトル1 C1
タイトル2 C2
タイトル4 C4
タイトル5 C5

タイトル 1 D1
タイトル 2 D2
タイトル 3 D3

私は次の出力が欲しい:

title1      title2       title3        title4      title5  
  A1                        A3           A4          A5  
  B1           B2                                    B5  
  C1           C2                        C4          C5  
  D1           D2           D3                        

AWKを使ってコードを書く方法を教えてください。

よろしくお願いします!

ベストアンサー1

空白(または「:」)だけで区切られるようにデータを変更できる場合は、次のawkプログラムがこれを実行できます。レイアウトを完璧にするために調整する必要があるかもしれません。

BEGIN { i = 1; }
$1 != "" { C[$1] = $1; X[$1,i] = $2 ; next; }
{ i++; }
END {
    asort(C);
    for ( k in C ) printf "  %8s\t", C[k];
    printf "\n";
    for ( j = 1; j <= i; j++ ) {
        for ( k in C ) printf "%8s\t",X[C[k],j];
        printf "\n";
    }
}

おすすめ記事