Сценарий оболочки для очистки файла listener.ora

у нас есть файл listener.ora, как показано ниже

      
[oracle@orahow admin]$ more listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host-ip-address)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = extproc)
      (ORACLE_HOME = /data/oracle/app/product/11.2.0.4/dbhome_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = db11g.domain.com)
      (ORACLE_HOME = /data/oracle/app/product/11.2.0.4/dbhome_1)
      (SID_NAME = db11g)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = db12c.domain.net)
      (ORACLE_HOME = /data/oracle/app/product/12.2.0.1/dbhome_1)
      (SID_NAME = db12c)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = db12c.domain.net)
      (ORACLE_HOME = /data/oracle/app/product/12.2.0.1/dbhome_1)
      (SID_NAME = db12c_DGMGRL)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = db18c.something)
      (ORACLE_HOME = /data/oracle/app/product/18.2.0.1/dbhome_1)
      (SID_NAME = db18c_DGMGRL)
    )  )

INBOUND_CONNECT_TIMEOUT_LISTENER =0

Я хотел бы удалить именно этот блок из файла.

      (SID_DESC =
  (GLOBAL_DBNAME = db12c.domain.net)
  (ORACLE_HOME = /data/oracle/app/product/12.2.0.1/dbhome_1)
  (SID_NAME = db12c)
)

Нужна помощь по сценарию команды / оболочки unix, чтобы удалить точный блок после списания базы данных oracle ...

1 ответ

sed

Этот sed удаляет строку с совпадающим шаблоном db12c) вместе с предыдущими 3 строками и следующей 1 строкой

       sed -n "1N;2N;3N;/db12c)/{N;d};P;N;D" listener.ora > listenerdel.ora

С помощью приведенного выше кода запишите его в новый файл или измените существующий файл следующим образом:

      sed -in "1N;2N;3N;/db12c)/{N;d};P;N;D" listener.ora

Пожалуйста, обратитесь к этому сообщению. Удаление n строк в обоих направлениях и совпадение в sed?

Другие вопросы по тегам