![awk를 사용하여 열 형식을 지정하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/170959/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%97%B4%20%ED%98%95%EC%8B%9D%EC%9D%84%20%EC%A7%80%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
retData.ssv 파일에는 다음이 포함되어 있습니다.
rectangle1;1;2
rectangle2;1;10
rect4;10;10
열을 정렬하기 위해 다음 명령을 어떻게 변경합니까?
$ awk -F ";" '{ print "area of", $1,":", $2 * $3}' rectData.ssv
area of rectangle1 : 2
area of rectangle2 : 10
area of rect4 : 100
예상 출력은 다음과 같습니다.
area of rectangle1: 2
area of rectangle2: 10
area of rect4: 100
(2, 10, 100은 왼쪽 정렬됨)
또는:
area of rectangle1: 2
area of rectangle2: 10
area of rect4: 100
(2, 10, 100 오른쪽 정렬)
또한 끝에 합계 행을 추가하는 방법(2, 10, 100 및 112 오른쪽 정렬):
area of rectangle1: 2
area of rectangle2: 10
area of rect4: 100
TOTAL AREA: 112
답변1
시도를 다음과 같이 조정해 보세요.
$ awk -F ";" '
{TOT += $2 * $3
printf "area of %s: %*d\n", $1, 14-length($1), $2 * $3
}
END {printf "TOTAL AREA: %*d\n", 12, TOT
}
' file
area of rectangle1: 2
area of rectangle2: 10
area of rect4: 100
TOTAL AREA: 112
답변2
$ awk -F ';' -v OFS='\t' '
{ tot+=prod=$2*$3; print "area of " $1 ":", prod }
END { print "TOTAL AREA:", tot+0 }
' file | column -s$'\t' -t
area of rectangle1: 2
area of rectangle2: 10
area of rect4: 100
TOTAL AREA: 112