Файл rectData.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