awkを使用してファイルのデータを並べ替える

awkを使用してファイルのデータを並べ替える

私にテーブルがあります。

 ID   Comment    Statement
  1    hi         hello
  2    hi         hello
  1    cya        bye
  1    k          ok
  2    kk         ok

awkを使用して以下に示す結果を生成するにはどうすればよいですか?したがって、IDは属性になり、ステートメントと同じ順序で保持されます。

 1       2
 hi      hi
 cya     N/A
 k       kk

ベストアンサー1

これにより、目的の出力が生成されます。

awk '
  NR>1 {
    ids[$1]
    if (s!=$3) c++
    statements[c]=$3
    s=$3
    comments[$3,$1]=$2
  } 
  END {
    for (id in ids)
      printf "%s\t", id
    print ""
    for (i=1; i<=c; i++) {
      for (id in ids) {
        comment = (comments[statements[i],id] ? comments[statements[i],id] : "n/a")
        printf "%s\t", comment
      }
      print ""
    }
  }
' file

秩序を維持するには、いくつかのことを覚えておく必要があります。

おすすめ記事