awk를 사용하여 열 형식을 지정하는 방법은 무엇입니까?

awk를 사용하여 열 형식을 지정하는 방법은 무엇입니까?

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

관련 정보