установить формат с помощью printf для $0

Это:

[ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; exit 1

не является:

[ "${#}" -eq 1 ] || { echo "Invalid number of arguments, expected one."; exit 1; }

Но вместо этого:

{ [ "${#}" -eq 1 ] || echo "Invalid number of arguments, expected one."; } 
exit 1

Ваш сценарий завершается независимо от того, сколько аргументов вы ему передали.

0
25.06.2020, 18:22
1 ответ

Строка форматирования дляawkprintf()следует тем же соглашениям, что и для C printf(), так что в принципе

awk '{T=0; for (i=1;i<=NF;i++) T+=$i; T/=NF; printf "%s%s%6.3f\n",$0,OFS,T}' fileinput > fileoutput

должно работать.

Минимальное изменение, необходимое для вашей текущей попытки, — указать

printf "%s %6.3f\n",$0,T

но я предлагаю разделить $0и T, используя фактическое значение разделителя выходного поля OFSна тот случай, если это не один пробел, а TABили что-то еще.

1
28.04.2021, 23:12

Теги

Похожие вопросы