awk 'BEGIN { COLM_FMT = "%-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s,    %-8s, %-8s, %-8s, %-8s,\n" }
           { printf COLM_FMT, ${totals[0]}, ${totals[1]}, ${totals[2]}, ${totals[3]}, ${totals[4]}, ${totals[5]}, ${totals[6]}, ${totals[7]},
           ${totals[8]}, ${totals[9]}, ${totals[10]}, ${totals[11]}, ${totals[12] }'

Почему приведенное выше выражение awk дает мне следующие ошибки:

'awk: синтаксическая ошибка около строки 2' 'awk: недопустимый оператор около строки 2'

Это внутри скрипта bash.

1 ответ1

0

Вы помещаете переменные bash в сценарий awk, но помещаете тело awk в одинарные кавычки, что предотвращает расширение переменных.

Вы знаете, что в bash есть команда printf? (введите help printf в командной строке bash)

fmt="%-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s, %-8s,    %-8s, %-8s, %-8s, %-8s,\n"
printf "$fmt" "${totals[@]}"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .