歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> linux shell+vim處理不同數據庫文本之間的轉換

linux shell+vim處理不同數據庫文本之間的轉換

日期:2017/3/3 16:31:32   编辑:關於Linux

還是之前那個XENIX系統,作為某地公安部門的戶籍查詢與管理系統,記錄的 是50多萬人口的基本信息。這套系統是1989年開發的,當時並未用標准的數據庫 理念設計(未設計兼容性),只允許查詢,打印,或生成輸出文本,輸出文本的結 果大致如下:

參考附件示例中的結構,對這些文本文件 通過VIM(或VI),再加上SHELL腳本,將其組織成為標准數據庫的可錄入格式:

先編個腳本,暫起名為m.sh

內容如下:

#從腳本命令行中 獲取要操作的文件路徑

vi $1<<end >&/dev/null

#替換所有^M換行符(變成LINUX下的標准換行 符)

:%s/\r//g

#刪除記錄之間的表格行

:g/^.─.*/d

#在記錄號前面加上分隔符, 以求後面處理統一

:%s/記錄號:/│記錄號:/g

#去掉一條記錄中間的斷 行,這樣,一條記錄就只占用一行空間

:%s/\n[^$]/│/

#刪除第00000號記錄,本記錄是無用的

:g/記錄號: 00000/d

#刪除 表頭統計說明

:g/公 安 人 口 信 息 管 理 系 統/d

#去掉 多余的空格與字段分隔符

:%s/\s*││*\s*/│/g

#刪除記錄前綴,比如“姓名:張三”變成“張三”

:%s/│[^│][^│]*:\s*/│/g

#刪除行首與行尾的字段分隔符

:%s/^│\s*//g

:%s/│$//g

:wq

end

將上述腳本保存後,在存放導出.TXT文件的路徑 下執行:

find . -maxdepth 1 -name "*.txt" -exec ./m.sh {} \;

完成後所有記錄字段均以"│"為分隔符,同時以行為記錄 單位重新整理。

剩下的工作就簡單多了,如果要移植到其他數據庫,按 文本格式進行處理就行了。

Copyright © Linux教程網 All Rights Reserved