Вы получаете сообщение об ошибке dist1: unbound variable
, поскольку вы установили параметр оболочки nounset
. Затем вы используете переменную dist1
до ее установки.
/REQUESTED STRUCTURE DATA/ { ++n; m = 0 }
$6 == "|r|" { r[n,++m] = $NF }
END {
for (j = 1; j <= m; ++j) {
$0 = j - 1
for (i = 1; i <= n; ++i)
$(i + 1) = r[i,j]
print
}
}
(перенаправить вывод, например. awk... >DEMLIR_task.txt
для сохранения в новый файл)
Данные поступают в виде разделов, каждый раздел начинается со строки REQUESTED STRUCTURE DATA
и содержит ряд записей. Записи можно найти, ища строку |r|
в 6-м поле.
Приведенная выше программа awk
выводит числа, собранные из последнего поля каждой записи в разделе в столбцах, каждой строке предшествует счетчик. Предполагается, что может быть любое количество записей для каждой секции(m
в коде )и что может быть любое количество секций во входных данных(n
в коде ).
Тестирование:
$ awk -f script.awk file
0 1.869679 1.869821 1.869881
1 1.530989 1.531483 1.531900
2 1.849134 1.849626 1.849678
Итак, как MC68020 сказал в комментариях, C не имел типа long
в то время, самое старое вхождение, которое я смог найти, находится в lib/time.s второго издания Unix, файле датировано 1972 -06 -07 на этом сайте, указанном выше, с этим источником (PDP -11 в сборе):
/ C library -- time
/ tvec = time(tvec);
/
/ tvec[0], tvec[1] contain the time
.globl _time
.data
_time:
1f
.text
1:
mov 2(sp),r0
sys time
mov ac,(r0)
mov mq,2(r0)
rts pc
Интересно, что кажется, что он всегда имел возвращаемое значение (tvec = time(tvec);
), предполагая, что tvec
является каким-то 2 -компонентным массивом из 16 -битовых значений, если это назначение имеет какое-либо значение.