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

질서를 유지하려면 몇 가지 사항을 기억해야 합니다.

답변2

awk 'BEGIN { colwidth=8; format="%-" colwidth "s"; printf format "%s\n","1","2"; };
  NR==1 {next;};
  /^ *1/ { if (NR>2) print col2; col2="N/A"; printf format,$2; };
  /^ *2/ { col2=$2; };
  END { print col2;} ' file
1       2
hi      hi
cya     N/A
k       kk

관련 정보