[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 两个文本,批处理如何根据正则两次搜索内容后替换主文本?

主文本.txt
  1. 《海阔天空》
  2. 作词 : 黄家驹
  3. 作曲 : 黄家驹
  4. 编曲 : Beyond/梁邦彦
  5. 今天我,寒夜里看雪飘过,怀着冷却了的心窝漂远方;
  6. 风雨里追赶,雾里分不清影踪,天空海阔你与我,可会变 (谁没在变);
  7. 多少次,迎着冷眼与嘲笑,从没有放弃过心中的理想;
  8. 一刹那恍惚,若有所失的感觉,不知不觉已变淡,心里爱 (谁明白我);
  9. 原谅我这一生不羁放纵爱**,也会怕有一天会跌倒;
  10. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  11. 今天我,寒夜里看雪飘过,怀着冷却了的心窝漂远方;
  12. 风雨里追赶,雾里分不清影踪,天空海阔你与我,可会变 (谁没在变);
  13. 原谅我这一生不羁放纵爱**,也会怕有一天会跌倒;
  14. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  15. 仍然**自我,永远高唱我歌,走遍千里;
  16. 原谅我这一生不羁放纵爱**,也会怕有一天会跌倒;
  17. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  18. 原谅我这一生不羁放纵爱**,也会怕有一天会跌倒;
  19. 背弃了理想,谁人都可以,哪会怕有一天只你共我……
复制代码
副文本.txt
  1. 《海阔天空》
  2. 今天我,寒夜里看雪飘过,怀着冷却了的心窝漂远方;
  3. 风雨里追赶,雾里分不清影踪,天空海阔你与我,可会变 (谁没在变);
  4. 多少次,迎着冷眼与嘲笑,从没有放弃过心中的理想;
  5. 一刹那恍惚,若有所失的感觉,不知不觉已变淡,心里爱 (谁明白我);
  6. 原谅我这一生不羁放纵爱自由,也会怕有一天会跌倒;
  7. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  8. 今天我,寒夜里看雪飘过,怀着冷却了的心窝漂远方;
  9. 风雨里追赶,雾里分不清影踪,天空海阔你与我,可会变 (谁没在变);
  10. 原谅我这一生不羁放纵爱自由,也会怕有一天会跌倒;
  11. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  12. 仍然自由自我,永远高唱我歌,走遍千里;
  13. 原谅我这一生不羁放纵爱自由,也会怕有一天会跌倒;
  14. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  15. 原谅我这一生不羁放纵爱自由,也会怕有一天会跌倒;
  16. 背弃了理想,谁人都可以,哪会怕有一天只你共我。
复制代码
这个能搜索到主文本.txt*句子
  1. [一-龥]*\*+[一-龥]*[^一-龥][一-龥]{1,}
复制代码
搜索出来的带*号,需要把多个*替换成[一-龥]+再次正则搜索副文本.txt
把搜索内容替换掉主文本带*的句子

谢谢很好用

TOP

回复 3# xp3000

例如"主文本.txt"修改为:
  1. 《海阔天空》
  2. 作词 : 黄家驹
  3. 作曲 : 黄家驹
  4. 编曲 : Beyond/梁邦彦
  5. 今天我,寒夜里看雪飘过,怀着冷却了的心窝漂远方;
  6. 风雨里追赶,雾里分不清影踪,天空海阔你与我,可会变 (谁没在变);
  7. 多少次,迎着冷眼与嘲笑,从没有放弃过心中的理想;
  8. 一刹那恍惚,若有所失的感觉,不知不觉已变淡,心里爱 (谁明白我);
  9. 原谅我这一生不羁放纵爱Ab,也会怕有一天会跌倒;
  10. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  11. 今天我,寒夜里看雪飘过,怀着冷却了的心窝漂远方;
  12. 风雨里追赶,雾里分不清影踪,天空海阔你与我,可会变 (谁没在变);
  13. 原谅我这一生不羁放纵爱Cd,也会怕有一天会跌倒;
  14. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  15. 仍然eF自我,永远高唱我歌,走遍千里;
  16. 原谅我这一生不羁放纵爱gH,也会怕有一天会跌倒;
  17. 背弃了理想,谁人都可以,哪会怕有一天只你共我;
  18. 原谅我这一生不羁放纵爱ij,也会怕有一天会跌倒;
  19. 背弃了理想,谁人都可以,哪会怕有一天只你共我……
复制代码
则脚本可做如下修改:
  1. awk "NR==FNR{M[++n]=$0;next}/[A-Za-z]/{str=gensub(/^([^A-Za-z]+)[A-Za-z]+([^A-Za-z]+)$/,\"\\1.*\\2\",\"g\",$0);for(i=0;i++<n;)if(M[i]~str)$0=M[i]}1"  副文本.txt 主文本.txt>结果.txt
复制代码
1

评分人数

TOP

谢谢,运行正常,就是不会用gawk,自己把*改英文[a-z]+就失败了

TOP

请确保“副文本.txt”及“主文本.txt”都均已保存为ANSI编码格式,下载gawk( http://bcn.bathome.net/tool/4.1.3/gawk.exe ),执行:
  1. awk "NR==FNR{M[++n]=$0;next}/\*/{str=gensub(/^([^*]+)\*+([^*]*)$/,\"\\1.*\\2\",\"g\",$0);for(i=0;i++<n;)if(M[i]~str)$0=M[i]}1" 副文本.txt 主文本.txt>结果.txt
复制代码
1

评分人数

TOP

返回列表