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 {} \;

完成后所有记录字段均以"│"为分隔符,同时以行为记录 单位重新整理。

剩下的工作就简单多了,如果要移植到其他数据库,按 文本格式进行处理就行了。

时间: 2024-12-22 07:20:27

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

常用 Linux shell &amp; vim 命令

以下是我在工作中常用的 Linux shell 命令,记下来,后续会不断补充. 查看正在执行的进程 ps -u username 查询指定的进程ID(27380)打开的文件 lsof -p 27380 杀死指定PID的进程 (PID为Process ID) kill PID 计算文件的行数.字数或字符数 wc 显示进程信息,并实时更新 top 调用top命令的"-H"选项,该选项会列出所有Linux线程 top -H 查看用户username的进程所打开的文件 lsof -u user

Linux/Unix shell 自动导入Oracle数据库

      使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linux 下使用 shell 脚本来实现自动导入Oracle数据库.        Linux Shell以及导入导出的相关参考:        Linux/Unix shell 脚本中调用SQL,RMAN脚本        Linux/Unix shell sql 之间传递变量       

Linux shell实现每天定时备份mysql数据库_linux shell

每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据: 需求:   1,每天4点备份mysql数据:   2,为节省空间,删除超过3个月的所有备份数据:   3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据: #创建shell文件 vim backup_mysql.sh mysqldump -uroot -p123456 --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql find

Linux Shell 文本处理工具集锦【转】

转自:http://www.cnblogs.com/me115/p/3427319.html 内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符的工具 sed 文本替换利器 awk 数据流处理工具 迭代文件中的行.单词和字符 本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut

思维导图学 Linux Shell攻略之干货篇 mysql数据库脚本管理系统

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/1610653 以结果为导向的学习,才是最有效率学习.笔者以前也曾经隔三差五的学习linux shell编程来着.给我的感觉就是,今天学了,后天忘了,一星期之后就白学了. 还好,最近自己平时没啥事,一直照着<linux shell攻略>,学做一些小例子,看着自己写的shell程序,简单的几行程序,实现一些好玩的效果,信心

linux下python3连接mysql数据库问题_linux shell

python语言的3.x完全不向前兼容,导致我们在python2.x中可以正常使用的库,到了python3就用不了了.比如说mysqldb 1.安装pymysql pymysql就是作为python3环境下mysqldb的替代物,进入命令行,使用pip安装pymysql pip install pymysql3 2.使用pymysql 在我们需要使用数据库的.py文件开头添加下面两行 import pymysql pymysql.install_as_MySQLdb() 第一行是引入pymysq

浅析linux下如何用脚本自动发送文本mail邮件_linux shell

1. 安装msmtp luther@gliethttp:~$ sudo apt-get install msmtp 2. 编辑配置脚本(~/.msmtprc是默认配置文件,也可以使用-C选项指定配置文件路径) luther@gliethttp:~$ vim msmtprc #添加如下内容 defaults #logfile /home/luther/msmtp.log account luther_test host mail.gliethttp.cn from luther@gliethttp

linux Shell入门:掌握Linux,OS X,Unix的Shell环境_linux shell

在Linux或类Unix系统中,每个用户和进程都运行在一个特定环境中.这个环境包含了变量.设置.别名.函数以及更多的东西.下面是对Shell环境下一些常用命令的简单介绍,包括每个命令如何使用的例子,以及在命令行下设定你自己的环境来提高效率. 找出你当前的shell 在终端应用中输入下面命令中的任意一个: ps $$ ps -p $$ 或者 echo "$0" 输出范例: 图1:找出当前的shell 找出所有已安装的shell 找到已安装shell的完整路径: type -a zsh t

Linux Shell 通配符、元字符、转义符使用实例介绍

  下面是一个实例: 代码如下: [chengmo@localhost ~/shell]$ ls a.txt b.txt c.old #2 [chengmo@localhost ~/shell]$ ls *.txt a.txt b.txt #3 [chengmo@localhost ~/shell]$ ls d*.txt ls: 无法访问 d*.txt: 没有那个文件或目录 从上面这个实例,不知道大家有没有发现问题呢.我们先了解一下,通配符相关知识,再分析下这个实例吧. 一.linux shel