Печатать строки между двумя шаблонами, делая паузу до нажатия клавиши после каждого фрагмента

Правильный способ управления службами и демонами в системе OpenBSD (, начиная с OpenBSD 5.7 ), заключается в использованииrcctl(8):

Чтобы включить inetdи ntpd(, предполагая, что вы настроили doasдля предоставления вам прав суперпользователя):

$ doas rcctl enable inetd
$ doas rcctl enable ntpd

Для запуска inetdи ntpdбез перезагрузки (требуются действительные /etc/inetd.confи/etc/ntpd.conf):

$ doas rcctl start inetd
$ doas rcctl start ntpd

Порт rsyncпоставляется с /etc/rc.d/rsyncd, что означает, что вы можете включить и запустить демон rsyncчерез

$ doas rcctl enable rsyncd
$ doas rcctl start rsyncd

Для этого необходимо сначала создать /etc/rsyncd.conf.

0
09.01.2020, 13:01
2 ответа

С помощью sedвы можете принудительно поставить обработку на «паузу» при достижении паттерна END HERE:

sed -n -e '/START HERE/,/END HERE/{p' -e '/END HERE/r /dev/stdin' -e '}' file

или, как sedсценарий:

/START HERE/,/END HERE/ {
    p
    /END HERE/ r /dev/stdin
}

Это просто проверяет шаблон END HEREво входных данных и начинает чтение со стандартного ввода. Это временно приостанавливает обработку данных до тех пор, пока не будет выполнена команда r.

Вы можете «снять паузу», нажав Ctrl+D .

То же самое сawk:

awk '/START HERE/,/END HERE/ { print; if (/END HERE/) getline dummy <"/dev/stdin" }' file

Здесь, поскольку мы используем getlineдля получения ввода от пользователя, достаточно нажать Enter , чтобы отобразить следующий раздел вывода.

0
28.01.2020, 03:27

У вас все в порядке с Python?

from __future__ import print_function
import fileinput

show = False

for line in fileinput.input('a.txt'):
  if "START HERE" in line:
    show = True
    continue
  if "END HERE" in line:
    show = False
    try:
      input("Press ENTER to continue")
    except:
      pass
    print(chr(27) + "[2J") # Clear screen
    continue
  if show:
    print(line, end='')
0
28.01.2020, 03:27

Теги

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