sed - 用于清理 listener.ora 文件的 Shell 脚本
问题描述
我们有如下的 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 命令/shell 脚本的帮助,以在 oracle 数据库停用后删除确切的块...
解决方案
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中的匹配?
推荐阅读
- node.js - 通过 Swagger 和 Express 验证请求正文变量
- html - 删除序言中的单引号(Html - Prolog)
- javascript - 在 gulp 任务中执行多个异步操作?
- javascript - 嵌套过渡期间NodeJS错误渲染
- sapui5 - Fiori Launchpad 插件
- ruby-on-rails - 如何在活动作业重试中删除回溯?
- java - 获取相同密码的不同哈希值(+盐)
- pdf - 使用 Electron PDF 进行物理打印
- asp.net - ELMAH 无法在生产服务器上登录数据库,但无法在测试服务器上登录
- javascript - javascript中的树视图