Как распечатать вывод с помощью awk или sed - PullRequest
0 голосов
/ 26 мая 2020

У меня есть следующий текст в файле. Отсюда, если поиск «Набор файлов», нужно получить вывод до второго «N». Я пробовал использовать awk и sed, но не смог получить ожидаемый результат.

Job: name=jobname JobType=66 level= Priority=10 Enabled=1
     MaxJobs=1 Resched=0 Times=0 Interval=1,800 Spool=0 WritePartAfterJob=1
     Accurate=0
  --> Client: Name=clientname Enabled=1 Address=XXXXXX FDport=9102 MaxJobs=1
      JobRetention=14 days  FileRetention=14 days  AutoPrune=1
  --> Catalog: name=MyCatalog address=*None* DBport=0 db_name=bacula
      db_driver=*None* db_user=bacula MutliDBConn=0
  -->Fileset: name=test_host
     O MZof
     N
     I /u01
     N

Из приведенного выше необходимо получить только результат ниже.

Fileset: name=test_host
         O MZof
         N
         I /u01
         N

Попытка команды ниже

awk '/Fileset:/ {flag=1;next} /N/{flag=0} flag {print}' file

Где набор файлов - это шаблон / N / - для флага конца

1 Ответ

3 голосов
/ 26 мая 2020

Если вы хотите, чтобы второй N остановил обработку, начните с флага 2 при обнаружении Fileset:, напечатайте строки, пока flag!=0, а затем уменьшите флаг для каждой строки с N.

awk '/Fileset:/{flag=2};flag;/N/&&flag{flag--}' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...