Board logo

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

作者: xp3000    时间: 2023-2-28 16:41     标题: 两个文本,批处理如何根据正则两次搜索内容后替换主文本?

主文本.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
把搜索内容替换掉主文本带*的句子
作者: hfxiang    时间: 2023-2-28 17:28

请确保“副文本.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
复制代码

作者: xp3000    时间: 2023-2-28 19:20

谢谢,运行正常,就是不会用gawk,自己把*改英文[a-z]+就失败了
作者: hfxiang    时间: 2023-3-1 11:53

回复 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
复制代码

作者: xp3000    时间: 2023-3-1 15:23

谢谢很好用




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2