Изменение каталога для файлов очереди печати в Linux

start=3; # these can only be positive integers
 stop=4; # stop > start

perl -lne "// or print if /Pattern/ && ++\$a == $start ... // && ++\$a == $stop" data.in

Perl-решение использует оператор диапазона ... , где два операнда действуют как триггеры: => пока первый операнд ложен, ... возвращает ложный. Как только первый операнд становится истинным, ... возвращает истину. Он станет ложным только тогда, когда второй операнд станет истинным. Тонкость возникает из-за того, что операнд1 не оценивается, как только он становится истинным, и операнд2 не оценивается, пока операнд1 является ложным.

sed -nE "
   /Pattern/!d
   x
      s/\$/./
      /^[.]{$start}\$/!{x;d;}
   x

   n

   :loop
      p;n
      /Pattern/{
         x
            s/\$/./
            /^.{$stop}\$/q
         x
      }
   bloop
" data.in

Решение sed использует пространство хранения для подсчета количества просмотров шаблона. Мы продолжаем отклонять строки до тех пор, пока не будет обнаружено $start количество шаблонов. Как только приходит шаблон $start-th, мы запускаем цикл, который продолжает читать следующую строку, выводить ее и все время измерять, виден ли шаблон $stop-th. Однажды увидев, мы быстро уходим.

1
04.05.2016, 13:33
0 ответов

Теги

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