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

來源:互聯網
上載者:User

還是之前那個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 {} \;

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

剩下的工作就簡單多了,如果要移植到其他資料庫,按 文字格式設定進行處理就行了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.