Replace Pioneer怎么实现批量打乱内容,比较复杂希望高手能帮忙解决一下?
要批量更新成千上万的文件
要实现以下变动
1.从第6行开始打乱段落
2.从第6行开始在每个段落的后面加个空行,并删除行中间的空格及全角空格,和多余的空行,只保留一个空行
3.删除第四行不相关内容(以下例子保留“中中”的内容)
4.查找第四行是否有某个关键词,如果没有就从词库中提取一个关键词(以下例子查找关键词“中中” 而例子中是有“中中”这个关键词的所以不用提取 )
5.随机取第6行后某行字段到第四行后面
6.随机在段落内插入3-4个随机内容
帮忙写段能一次实现更新的代码,如果分几次执行太慢了,求高手帮忙,谢谢!!
例如原内容:
111111111
222222
33333333
4444 444中中,fsdfsd
5555555
aaaaaaaa
bbbbbbbb
cccccccc
dddddddd,0000
eeeeeeeee
ffffffff
ccccccc
执行后
111111111
222222
33333333
444中中,dddddddd
5555555
ffffffff
dddddddd,0000
随机内容2
bbbbbbbb
cccccccc
随机内容3
eeeeeeeee
随机内容1
aaaaaaaa
ccccccc 展开
用软件Replace Pioneer按照以下步骤,可以满足要求:
ctrl-o打开文件
ctrl-h打开replace窗口
* 在replace with pattern输入
lines($match,1,3)
replace(grep(/中中/,split(/[\s,,]+/, lines($match,4,4))),/^$/,rand_str_unique(1,'aaa','bbb','ccc')) rand_str_unique(1,grep(/\S/,split('\n',lines($match,6,-1))))
lines($match,5,5)
rand_str_unique(count($match,'\S+\s*?\n')-1,grep(/\S/,split('\n',lines($match,6,-1)), map{rand_str(10,'a'..'z','A'..'Z',0..9)}(1..4)),"d=\n\n")点击replace,完成
注意:
* 以上步骤如果发现第4行没有指定字符“中中”,就在指定列表中任选一个。
可以自己改rand_str_unique(1,'aaa','bbb','ccc')中的'aaa','bbb','ccc',为 '我的字符串1‘,'我的字符串2‘,'我的字符串3‘,...
* map{rand_str(10,'a'..'z','A'..'Z',0..9)}(1..4)是用来生成4个10位的随机字符串的,如果希望自己规定一个随机字符的范围,可以用map{rand_str(1,'随机串1','随机串2','随机串3','随机串4')}(1..4)来代替。
* 为简单化,暂未考虑全角空格,最好自己预处理先删除全角空格。
能不能增加功能
1.随机插入的内容能不能不让它在同一个位置和第六行及文章最后出现?
2.删除第四行不相关内容 ,能不能实现只要是不和关键词一个字符串的都删除(不管是用什么符号分隔只要不是碍着的都删掉)?
1. 需要较多代码,比较复杂
2. 自己扩充split(/[\s,,]+/里的分隔符即可,比如split(/[\s,,\.\#\%]+/扩充了.#% 3个分隔符
2023-07-25 广告