나한테 테이블이 있어
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