linux shell+vim处理不同数据库文本之间的转换

简介:
还是之前那个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 {} \;
 
完成后所有记录字段均以"│"为分隔符,同时以行为记录单位重新整理。
剩下的工作就简单多了,如果要移植到其他数据库,按文本格式进行处理就行了。
 









本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/163433,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
Shell 开发工具
shell脚本中调用vim处理文档
shell脚本中调用vim处理文档
|
人工智能 运维 Shell
大话Linux——Vim编辑器与Shell编程
## 4、Vim编辑器与Shell命令脚本 4.1、Vim文本编辑器 Vim编辑器的三种模式及切换方法 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等 输入模式:正常文本录入 保存或退出我能当,以及设置编译环境
454 0
|
NoSQL JavaScript 前端开发
程序员必备手册 | Git、Vim、GDB、Shell、Python
程序员必备手册 | Git、Vim、GDB、Shell、Python
147 1
程序员必备手册 | Git、Vim、GDB、Shell、Python
|
存储 网络协议 Unix
Linux命令汇总 | vim | shell | 进阶【2022版】
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。 它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。 Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE等。
341 0
Linux命令汇总 | vim | shell | 进阶【2022版】
|
数据可视化 Shell Linux
linux《vim使用详解与基础shell脚本演示》
vim基本用法,基础shell编写
916 0
|
监控 Shell Linux
sed命令详解 vim高级技巧 shell编程上
第1章 sed命令详解 1.1 查找固定的某一行 1.1.1 awk命令方法 [root@znix ~]# awk '!/oldboy/' person.txt 102,zhangyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO 1.
1290 0
|
搜索推荐 Shell 开发工具
|
Shell 应用服务中间件 nginx
|
Shell Linux 开发工具