背景
最近需要处理一些数据,以前总是使用UltraEdit处理诸如文本、二进制数据,有时也简单地看代码、脚本等。用习惯了,感觉也顺手了。
用UE查看数据很方便,但复制数据时却遇到了一点麻烦。
使用工具生成了一些二进制存储的随机数,打开后会同时显示十六进制和字符。这时,选中数据复制时,粘贴的却是一堆乱码,无法直接粘贴到想要的十六进制数据。
粘贴所需要的数据
经过笔者亲自实践,简单几步即可完成十六进制数据的复制:
-
使用UE打开二进制文件,默认会以十六进制显示(编辑——十六进制编辑)
-
选中需要复制的十六进制数据,右键选择十六进制复制选定视图
-
新建一个空白文档,Ctrl+v粘贴即可,此时会得到十六进制数据和右边的ASCII码
-
按下Alt键不松开,鼠标选择需要的十六进制数据,此时复制后再粘贴即为所需要的十六进制数据
至此,大功告成,可以任意处理得到的数据了。
分列查看csv文件
使用Execl可以方便地查看csv文件,但有时候ue已经打开了,没必要再开个execel,并且ue查看csv文件也很方便。
- 使用ue打开csv文件,此时显示的内容为纯文本
- 选择菜单: 列 - 转换到固定列
- 在分隔字符栏中输入分隔符,我这里使用的分隔符是“|”,一般csv文件使用逗号分隔
- 单击右上角的扫描,ue会自动填充字段宽度栏
- 单击转换,ok了
提取包含特定内容的所有行
以提取所有包含“test”的行为例:
- ctrl + f,打开搜索,勾选“列出包含字符串的行”,“搜索”内容为“test”;点击全部统计,点击下一个
- 在搜索结果中选择所有,右键选择“拷贝到粘贴板”
- 新建一空白文件,然后ctrl+v粘贴
删除包含特定内容的行
以删除包含“test”的行为例:
- 按ctrl+r,使用“替换”功能,勾选正则表达式,引擎默认UltraEdit,“替换”内容为“%test^p”,“替换为”为空
- ^p 是 DOS 文件类型的换行符。如果是 Unix 类型文件,则用 ^n
- 删除空行,使用“替换”功能,“替换”内容为“rnrn”,“替换为”为“rn”
使用工具的思考
完成了任务,解决了问题,这很简单,但不能止于此。UE作为一个处理文字的工具,怎么使用才能最大化地提高效率呢?
针对刚刚解决的问题,其实上面的步骤并不简单,可以有很多种方式来处理这个问题。
再来抽象一下我们的问题:从一个二进制文件中复制一些十六进制数据。
解决思路如下:
-
为什么非要用UE,也可以使用其他编辑器替代,如notepad, 网上一查可以有一堆。Linux下可以直接使用od, xxd, hexdump等直接输出到屏幕上,这样复制再简单直接
-
假定使用UE,也可以做一些快捷的配置,如:
-
在菜单栏空白处,右键——定义快速访问工具栏,把所需要的命令都先定义在工具栏上,包括十六进制编辑、十六进制复制选定视图等
-
定义工具栏后,繁杂的操作点几下鼠标即可完成
-
新建文档可以在文档标签后双击新建
- 进一步思考,为什么用这种方式间接获取十六进制数据,在需要使用这样的数据的时候有没有更简单方便的方法呢?
经过这样一番思考,可能解决问题的思路就会多一些,看待问题的角度也会多一些。
推而广之,我们在工作和生活中,都需要使用各种各样的工具,它们的使用是不是也可以提高一下效率,就如同我正在使用mk语法编辑文档一样,还有没有更好的方式?
我希望,我们的日常不只是重复,还有思考和提高。