用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