linux: сенсорная точность даты

Если я правильно вас понял, вы ищете что-то вроде:

$ awk '/server *{/{c=1; print;next} c&&/{/{c++} c&&/}/{c--} c' file
  server { # php/fastcgi
    listen       80;
    server_name  domain1.com www.domain1.com;
    access_log   logs/domain1.access.log  main;
    root         html;

    location ~ \.php$ {
      fastcgi_pass   127.0.0.1:1025;
    }
  }

  server { # simple reverse-proxy
    listen       80;
    server_name  domain2.com www.domain2.com;
    access_log   logs/domain2.access.log  main;

    # serve static files
    location ~ ^/(images|javascript|js|css|flash|media|static)/  {
      root    /var/www/virtual/big.server.com/htdocs;
      expires 30d;
    }

    # pass requests for dynamic content to rails/turbogears/zope, et al
    location / {
      proxy_pass      http://127.0.0.1:8080;
    }
  }

Explanation

  • / server * {/ {c = 1; Распечатать; next;} : если эта строка соответствует server , 0 или более пробелов, а затем {, установите для переменной c значение 1. Итак, c будет 1 каждый раз, когда мы находим новый блок server {. Затем выведите строку и перейдите к следующей строке.
  • c && / {/ {c ++} : если c определен, а не 0, и эта строка соответствует {, увеличить c на 1 ( c ++ ). Это могло быть записано как , если (c && / {/) {c = c + 1} . Таким образом, значение c будет увеличиваться для каждого найденного вложенного блока {.

  • c && /} / {c -} : если c определено, а не 0, и эта строка соответствует } , декремент c на 1. Это могло быть записано как , если (c && /} /) {c = c-1} . Это гарантирует, что значение c будет уменьшаться при закрытии каждого вложенного блока {} .

  • c : это трюк awk . Действие по умолчанию, когда что-то оценивается как истина в awk , - это распечатать текущую строку. Здесь он будет печатать, если c определено, а не 0 (истина). Из-за приведенных выше команд, которые увеличивают и уменьшают c в зависимости от того, находимся ли мы в блоке server , это приведет к печати только тех строк, которые вам нужны.

3
09.10.2017, 16:21
0 ответов

Теги

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