透過shell指令碼格式化tnsnames.ora內容案例一則
最近總結了下工作過程中的工作量,發現為開發人員配置引數佔據了較大的一塊,於是便想透過shell指令碼簡化工作流程操作及減少工作量。
在配置引數的過程中,首先需要檢視tnsnames.ora中的內容,如果需要配置的tns串已經在檔案中存在,則直接將相關引數指向某個tns串即可。如果不存在,則涉及在tnsnames.ora中新增tns串,再設定相關引數。
在現在的工作中,我們確定透過cat檢視tnsnames.ora,接著結合管道和grep來確認tns串是否存在,但這樣通常過於繁瑣,我們想簡單寫個shell指令碼,以後只需要將tnsnames.ora作為引數傳入,即可輸出相關結果及提示相應的操作。
在編寫指令碼過程中,首先面臨的一個問題就是tnsnames.ora中tns串的格式不一致:有的tns在同一行,有的tns串分好幾行,這樣的話,我們需要對檔案格式進行格式化。為了便於後續的操作,我們決定將所有的tns串都整理成一行。
格式化指令碼主要內容如下:
sed '/^$/d' $1 | sed 's/ //g' | sed ':a;N;$!ba;s/\=\n/\=/g' | sed ':a;N;$!ba;s/\n(/(/g' | sed ':a;N;$!ba;s/\n)/)/g' > tnsnames.result
指令碼的主要思路為:
1.首先將tnsnames.ora裡的空行和空格去除。
2.將以 ( 和 ) 開頭的行,整理到一行
3.將處理後的結果重定向到一個檔案中,儲存下來。
對於sed ':a;N;!ba;s/\n(/(/g' 命令的解釋:
:a建立一個標記。
N 追加當前行和下一行到模式空間中
ba如果處於最後一行前,跳轉到之前的標記處
$!ba($!意思是不在最後一行做後面的操作,最後一行,特殊處理。)
對於查詢到tns串是否存在後的操作,由於較簡單,略過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30167136/viewspace-1767815/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell指令碼匯入外部指令碼內容指令碼
- shell指令碼的一則簡單運用案例指令碼
- 透過shell指令碼分析足彩指令碼
- 透過shell定製ash指令碼指令碼
- iOS使用shell指令碼注入混淆內容iOS指令碼
- 透過shell指令碼檢視鎖資訊指令碼
- 透過shell指令碼監控oracle session指令碼OracleSession
- shell指令碼案例指令碼
- 透過shell指令碼檢視procedure的資訊指令碼
- 透過shell指令碼檢視package的資訊指令碼Package
- 【shell 指令碼】檢視*.gz 檔案的內容指令碼
- 透過shell指令碼得到資料字典的資訊指令碼
- 用shell指令碼合併多個檔案內容指令碼
- 透過shell指令碼定位效能sql和生成報告指令碼SQL
- 透過shell指令碼監控sql執行頻率指令碼SQL
- shell指令碼(3)-格式化輸出指令碼
- 透過shell指令碼監控日誌切換頻率指令碼
- 透過shell指令碼生成查詢表資料的sql指令碼SQL
- shell指令碼-透過lftp同步遠端目錄到本地指令碼FTP
- shell指令碼獲取時間格式化指令碼
- Linux 【Shell指令碼經典案例】Linux指令碼
- [Shell] 指令碼案例(1)--while,for,RANDOM,case指令碼Whilerandom
- 透過shell得到資料庫中許可權的指令碼資料庫指令碼
- 透過shell指令碼生成資料統計資訊的報表指令碼
- 透過shell指令碼抓取awr報告中的問題sql指令碼SQL
- 案例四:Shell指令碼生成隨機密碼指令碼隨機密碼
- shell基礎教程二十一: shell指令碼中echo顯示內容帶顏色指令碼
- 透過shell指令碼來檢視Undo中資源消耗高的sql指令碼SQL
- 透過shell指令碼來得到不穩定的執行計劃指令碼
- 透過 Prometheus 編寫 TiDB 巡檢指令碼(指令碼已開源,內附連結)PrometheusTiDB指令碼
- 通過shell指令碼分析足彩指令碼
- 案例:通過shell指令碼實現mysql資料備份與清理指令碼MySql
- 指令碼 - 透過 mac 反查 IP指令碼Mac
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- 透過shell指令碼檢視資料庫表空間使用情況指令碼資料庫
- [ Shell ] 通過 Shell 指令碼匯出 CDL 網表指令碼
- 案例:利用shell指令碼spool資料到一指定文指令碼
- 通過shell定製ash指令碼指令碼