用Vim当命令行工具替换内容
用AutoHotkey做文件内容处理一般是如下步骤:
- 读取文件内容到变量str
- 修改str变量
- 删除原文件,并FileAppend(str, fp)
这个步骤不复杂,但是需要考虑其他因素
- 原文件编码类型,否则读取会有问题
- 原文件分行为DOS还是UNIX
- 有些情况,还要考虑是否有BOMB选项
基于以上情况,个人比较偏向用文本处理工具来打开文件,修改后直接保存,不管编码。
于是就折腾了Vim的命令行参数
gvim.exe -e -s -u NONE -c "set nobackup noswapfile nowritebackup encoding=utf-8" -c "%s/reg/new/g" -c wq c:\1.txt
其中要修改的是3处
- reg是查找内容,注意- \符号需要转义成- \\,如果有中文就不好用了,暂时还没解决
- new是替换内容,如果有- 中文需要用- \='abc'.nr2char(numOrd)形式转成表达式,也有点麻烦
- c:\1.txt是文件路径
另个用sed,只是小试了下,路径的表达方式要注意
sed.exe -i 's/reg/new/g' /c/1.txt