用UltraEdit的宏从大文件中提取内容

转载:http://sheng.iteye.com/blog/1511229

     UltraEdit这个软件相信多数朋友都熟悉,但基本上都是基于一般应用:比如编辑相关的代码、文本,查找替换等操作。今天正好有一个数据库导出的文本,有几十万行数据,需要查找相关的客户信息,如果文件行数不多的话用excel筛选下很方便,但这次行数太多,需要分隔成几个文件筛选后再合并,比较麻烦。就想到了宏...
  首先确定一个思路,把原始数据行中含有所需某个客户号的行,一行一行的复制到一个新的文件中;
  然后开始创建宏:点击“宏”菜单中的“编辑宏”,在弹出的窗口中点击“新建宏”,输入宏名称,比如:客户查找,点“确定”,默认情况下会出现以下3行:
InsertMode
ColumnModeOff
HexOff
 
  继续在下面添加上自己的语句来实现我们需要的功能,在右边是语句的作用:
NewFile                                                        创建一个新文档,同时活动标签为新文档
NextDocument                                              切换到下一个文件标签文档,即返回到原始的数据文档
Top                                                               到文档的起始位置
Loop 0                                                          设置循环,后面的0指无限次循环
UnixReOff                                                     切换正则表达式到 UltraEdit 样式的正则表达式(非 Unix)
Find "30071456"                                           查找客户编号为30071456
IfFound                                                         如果查到
SelectLine                                                     选中当前活动行
Copy                                                            复制选中内容
NextDocument                                             切换到下一个标签,即新建的文档
Paste                                                            把粘贴板中的内容复制到光标所在位
NextDocument                                             切换到下一个标签,即返回到原始文档
Key RIGHT ARROW                               发送一个→,即光标移动到下一行开始处
Else                                                              如果没找到
ExitLoop                                                      结束循环
EndIf                               与前面的ifFound对应
EndLoop                               与前面的Loop对应
NextDocument                                            切换到下一个标签,即新建文档

  好了,代码就是这些,点击“关闭”,再确认更新宏,试试效果,点击宏菜单中的再次运行,稍等一会。。(可以喝几口茶,也可以闭目养神,剩下的宏帮你完成)
  哈哈,结果出来了,所需的几百行数据就躺在新的文档里。

注意:
宏运行过程中,你可以正常的使用其他软件,让UltraEdit在“幕后”运行,但需要注意的一点就是:不能对剪贴板进行“写”操作,就是不能再剪贴或复制其它东西。各位朋友可以看到在添加的宏语句当中,其中第9行和第11行分别是复制查找到的行和粘贴剪贴板中的内容到新文档中,虽然这个间隔非常短,但如果宏刚好复制好查找到的行,而你要新复制了一个东东,就会出现粘贴到新文档中的数据是你刚刚复制的东东,而不是宏查找到的内容!!


你可能感兴趣的:(宏,ultraEdit)