像EmEdito那样能录制脚本的文本编辑器,还有什么?

我知道的还有notepad++,想找个更好用的

EmEditor替换查找用起来没VSC顺手

22:18补充:

[pixiv][2021.07.10][2033916(あすてろid)][91155317_p1(CORNEA)][#オリジナル#風景#廃墟#風景5000users入り#ゲーム画面風######]
[pixiv][2022.12.08][1039353(Mika Pikazo)][103449092_p0(FREE)][1353×2600][#オリジナル#オリジナル10000users入り#女の子########]

举个例子,比如这种形式的文本有多组
要提取出pid然后把它变成链接、时间、用户id、用户名字、标签,再把它们变成CSV表格
最终是变成类似这样


类似的任务要多次执行,所以要像EmEditor那样写成脚本文件方便

Emacs、VIM能干这个?

Emacs,你的终极选择。有自己的正则表达式构建工具 re-builder,有自己的正则搜索工具,还可以 1+1>2:

1 个赞

这个门槛太高了,需要一个能立即上手处理任务

试过入门Emacss,没法能立即用上,而且Windows环境遇到的问题巨多,太折磨人了

vim也可以錄製操作。

这个门槛也不低啊 :smiling_face_with_tear:

ahk門檻低不低?

可我是需要个专门处理文本的编辑器

那么 就像我群里推荐的那样 试试UltraEdit吧 :rofl:

我不知道你到底要處理甚麼樣的文本。

我的错

[pixiv][2021.07.10][2033916(あすてろid)][91155317_p1(CORNEA)][#オリジナル#風景#廃墟#風景5000users入り#ゲーム画面風######]
[pixiv][2022.12.08][1039353(Mika Pikazo)][103449092_p0(FREE)][1353×2600][#オリジナル#オリジナル10000users入り#女の子########]

比如这种形式的文本有多组
要提取出pid然后把它变成链接、时间、用户id、用户名字、标签,再把它们变成CSV表格
最终是变成类似这样


Emacs、VIM能干这个?

原文这么规律,支持正则的编辑器都可以吧
用类似$1$2$3 > $2$1$3 的方式调整顺序并插入分隔符

要多次执行,不是执行一次就不用

正则表达式也不是一次性的东西呀???
只要处理的是同样规律的文本,写好的表达式保存成宏或者找个 txt 存起来就行了

如果每次处理的文本规律都不一样,那先前你录制的宏是怎么实现需求的?

用到的情况正则大多时候是一样的,即使有变动也只有正则,替换下就行

正则可以简化一下,然后你脚本后面的拼接网址和添加分隔符也可以加到正则表达式里一步完成

简化的正则式(匹配括号内容):

(?<=\[|\()[^\]\()]+

赶着打卡,没空写完整了 :joy:

……正则我会写,这只是举个例子

那就直接搜支持宏的文本编辑器
除了上面提到的 Emacs、Vim、UltraEdit,还有 Sublime Text、Atom,就连你自己一开始提到的VS Code也是支持宏的


补充一个万能的:Excel :laughing:

具体说说怎么个不顺手?我直觉 EmEditor 就是最适合你的编辑器,这个问题将不成问题

1 个赞

您这个问题可以用 busybox-w32 里面的UNIX命令行工具解决。

我们先将原始数据保持在 data.txt 中。

首先,您给出的这段数据,如果将其中的所有 [) 删去,并将所有 ]( 替换为 , ,则可得到一张二维表:

sed -e 's/\[//g; s/\]/,/g; s/(/,/g; s/)//g' data.txt > data.csv

效果如下:

不过很显然,第1行没有分辨率信息,故会出现串行。为此要将前面是大写字母的 ,# 替换为 ,,#,即为分辨率信息留出空的单元格:

sed -E -i 's/([A-Z])([A-Z])\>,#/,,#/g' data.csv

这里参考了 https://blog.csdn.net/u011584949/article/details/126933992

效果如下:

剩下的就好办了,把每一列提取出来,再将您感兴趣的列拼接在一起即可。

按列分析文本是 awk 的看家本领。可如我们要提取 “日期”、“画师名” 和 “插画ID” 两列(即第2列、第4列和第5列),可以这样做:

awk -F ',' '{print $2}' data.csv > date.list
awk -F ',' '{print $4}' data.csv > artist.list
awk -F ',' '{print $5}' data.csv > pic_id.list

然后,将这些文本以 , 为分隔符,按列拼接,即可得到一个 csv 表格。这是 paste 工具擅长的。命令如下:

paste -d ',' pic_id.list artist.list date.list > pic_data.csv

捕获3

其中,-d 选项用于指定分隔符,> 符号前的文件排列顺序,就是输出文档中各列的顺序。

综上,可写成如下脚本:

#!/bin/sh

# 数据预处理
sed -e 's/\[//g; s/\]/,/g; s/(/,/g; s/)//g' data.txt > data.csv
sed -E -i 's/([A-Z])([A-Z])\>,#/,,#/g' data.csv

# 剥离列
awk -F ',' '{print $2}' data.csv > date.list
awk -F ',' '{print $4}' data.csv > artist.list
awk -F ',' '{print $5}' data.csv > pic_id.list

# 列重组
paste -d ',' pic_id.list artist.list date.list > pic_data.csv

# 清理临时文件
rm data.csv
rm *.list

在WIndows下,可将上述命令保存为脚本文件 script.sh,然后安装 busybox-w32(官网:https://frippery.org/busybox/):下载 busybox.exe(或 busybox64.exe·,用于64位系统),将其放在 X:\Windows` 目录下(X 是系统盘盘符),然后在命令行中执行:

busybox ash ./script.sh
# 或:busybox64 ash ./script.sh

不过,这样得到的 csv 文档是以 UTF-8 编码的,在Excel上读取时可能会出一些问题(我用的是Office 2019,读取 UTF-8 编码的 csv 文档时会乱码,可能是我的配置不正确)。


如想进一步了解awk,可以看一看这篇文章:https://www.ruanyifeng.com/blog/2018/11/awk.html。awk是一门强大的、用于数据分析的计算机语言,但其基本操作还是很简单的。

sed也是一个不错的编辑器,很适合在脚本中使用,其基本操作可以参考这篇文献:http://c.biancheng.net/view/994.html

word VBA