формула в гавке

У меня есть проблема, которую я пытаюсь решить в gawk. Это должно быть так просто, но мои попытки закончились ошибкой деления на ноль.

То, что я пытаюсь сделать, выглядит следующим образом:

maxlines = 22 (fixed value)
maxnumber = > max lines (unknown value)

Пример:

maxlines=22 
maxnumber=60

Мой вывод должен выглядеть следующим образом:

print lines:
1
2
...
22
print lines:
23
24
...
45
print lines:
46 (remainder of 60 (maxnumber)) 
47
...
60

person user508915    schedule 15.10.2009    source источник
comment
Я думаю, что ваш подсчет непоследователен - или очень неясен (должно ли быть 44 вместо 45 и 45 вместо 46? Кроме того, я с Loadmaster - запутался в том, что вам действительно нужно.   -  person Jonathan Leffler    schedule 16.10.2009


Ответы (2)


Непонятно, о чем вы спрашиваете, но я предполагаю, что вы хотите перебирать строки ввода и печатать новый заголовок (заголовок страницы?) после каждых 22 строк. С помощью простого счетчика и проверки

count % 22 == 1

который говорит вам, что пора печатать следующую страницу.

Или вы можете сохранить два счетчика, один для абсолютного номера строки, а другой для номера строки на текущей странице. Когда второй счетчик превысит 22, обнулите его и напечатайте заголовок следующей страницы.

person David R Tribble    schedule 15.10.2009

С некоторой помощью разработал приоритет gawk, и это работает -

максимальное количество строк = 22

максимальное число = 60

            for (i = 1; i <= maxnumber;  i++){
                    if ( ! ( (i-1) % maxlines) ){
                     print "\nprint lines:"
                      }
                    print i
            }
person user508915    schedule 18.10.2009
comment
Я предпочитаю использовать оператор == 0 вместо оператора !, потому что он понятнее и не смешивает логические и числовые выражения. - person David R Tribble; 27.10.2009