免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1918 | 回复: 13

[文本处理] 批量随机值替换href 的链接 [复制链接]

论坛徽章:
0
发表于 2016-11-11 20:10 |显示全部楼层
有文本 test.txt

  1. <div class="wz"><a href="#" target="_blank">复古巴黎公寓翻新</a></div></div>
  2.         </div>
  3.         <div class="h10"></div>
  4.         <h3><a href="#" target="_blank">装修工具</a></h3>
  5.         <div class="picline">
  6.           <div class="jzbt"><a href="#" target="_blank">
  7.             <div class="qz"></div>
  8.             <div class="jzbt-txt">墙砖</div>
  9.             </a></div>
  10.           <div class="jzbt"><a href="#" target="_blank">
  11.             <div class="dz"></div>
  12.             <div class="jzbt-txt">地砖</div>
  13.             </a></div>
  14.           <div class="jzbt"><a href="#" target="_blank">
  15.             <div class="db"></div>
  16.             <div class="jzbt-txt">地板</div>
  17.             </a></div>
  18.           <div class="jzbt"><a href="#" target="_blank">
  19.             <div class="bz"></div>
  20.             <div class="jzbt-txt">壁纸</div>
  21.             </a></div>
  22.           <div class="jzbt"><a href="#" target="_blank">
  23.             <div class="tl"></div>
  24.             <div class="jzbt-txt">涂料</div>
  25.             </a></div>
  26.           <div class="jzbt"><a href="#" target="_blank">

  27.             <div class="cl"></div>
  28.             <div class="jzbt-txt">窗帘</div>
  29.             </a></div>
  30.         </div>
  31.       </div>
  32.     </div>
  33.     <div class="clear"></div>
  34.   </div>
复制代码
需求 将 href中的 #链接 随机替换成 类似  a href="{$links[id].href}"  ,ID 是一个随机数值且有一定区间 比如 1-20.
效果如下:
  1. <div class="wz"><a href="{$links[1].href}" target="_blank">复古巴黎公寓翻新</a></div></div>
  2.         </div>
  3.         <div class="h10"></div>
  4.         <h3><a href="#" target="_blank">装修工具</a></h3>
  5.         <div class="picline">
  6.           <div class="jzbt"><a href="{$links[10].href}" target="_blank">
  7.             <div class="qz"></div>
  8.             <div class="jzbt-txt">墙砖</div>
  9.             </a></div>
  10.           <div class="jzbt"><a href="{$links[11].href}" target="_blank">
  11.             <div class="dz"></div>
  12.             <div class="jzbt-txt">地砖</div>
  13.             </a></div>
  14.           <div class="jzbt"><a href="{$links[12].href}" target="_blank">
  15.             <div class="db"></div>
  16.             <div class="jzbt-txt">地板</div>
  17.             </a></div>
  18.           <div class="jzbt"><a href="{$links[3].href}" target="_blank">
  19.             <div class="bz"></div>
  20.             <div class="jzbt-txt">壁纸</div>
  21.             </a></div>
  22.           <div class="jzbt"><a href="{$links[15].href}" target="_blank">
  23.             <div class="tl"></div>
  24.             <div class="jzbt-txt">涂料</div>
  25.             </a></div>
  26.           <div class="jzbt"><a href="{$links[17].href}" target="_blank">

  27.             <div class="cl"></div>
  28.             <div class="jzbt-txt">窗帘</div>
  29.             </a></div>
  30.         </div>
  31.       </div>
  32.     </div>
  33.     <div class="clear"></div>
  34.   </div>
复制代码


test.txt.gz

286 Bytes, 下载次数: 5

论坛徽章:
0
发表于 2016-11-11 20:15 |显示全部楼层
打赏二维码出不不来撒。。

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
发表于 2016-11-11 20:35 |显示全部楼层

  1. awk 'NR==FNR{a[NR]=$0;next}/href="#".*target="_blank"/{sub(/#/,"{$links["a[++i]"].href}")}1' <(seq 1 20|shuf) test.txt
复制代码

论坛徽章:
0
发表于 2016-11-11 20:47 |显示全部楼层
本帖最后由 老狼01 于 2016-11-11 20:54 编辑

谢谢         

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
发表于 2016-11-11 20:55 |显示全部楼层
回复 4# 老狼01


  1. awk 'NR==FNR{a[NR]=$0;next}/href="#".*target="_blank"/{sub(/#/,"{$links["a[++i]"].href}")}1' <(seq 1 20|sort -R) test.txt
复制代码

?

论坛徽章:
0
发表于 2016-11-11 21:08 |显示全部楼层
可以

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-11-11 22:02 |显示全部楼层

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use utf8;

  5. binmode (STDOUT, ':encoding(utf8)');

  6. while (<DATA>){
  7.     /\G\s*<div[^>]+>/g and s/\G(<a[^#]+)#/sprintf("$1\{\$links[%d].href}",(int(rand(20)))+1)/ge;
  8.     print;
  9. }

  10. __DATA__
  11.     <div class="wz"><a href="#" target="_blank">复古巴黎公寓翻新</a></div></div>
  12.             </div>
  13.             <div class="h10"></div>
  14.             <h3><a href="#" target="_blank">装修工具</a></h3>
  15.             <div class="picline">
  16.               <div class="jzbt"><a href="#" target="_blank">
  17.                 <div class="qz"></div>
  18.                 <div class="jzbt-txt">墙砖</div>
  19.                 </a></div>
  20.               <div class="jzbt"><a href="#" target="_blank">
  21.                 <div class="dz"></div>
  22.                 <div class="jzbt-txt">地砖</div>
  23.                 </a></div>
  24.               <div class="jzbt"><a href="#" target="_blank">
  25.                 <div class="db"></div>
  26.                 <div class="jzbt-txt">地板</div>
  27.                 </a></div>
  28.               <div class="jzbt"><a href="#" target="_blank">
  29.                 <div class="bz"></div>
  30.                 <div class="jzbt-txt">壁纸</div>
  31.                 </a></div>
  32.               <div class="jzbt"><a href="#" target="_blank">
  33.                 <div class="tl"></div>
  34.                 <div class="jzbt-txt">涂料</div>
  35.                 </a></div>
  36.               <div class="jzbt"><a href="#" target="_blank">

  37.                 <div class="cl"></div>
  38.                 <div class="jzbt-txt">窗帘</div>
  39.                 </a></div>
  40.             </div>
  41.           </div>
  42.         </div>
  43.         <div class="clear"></div>
  44.       </div>
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-09-07 06:20:00程序设计版块每日发帖之星
日期:2015-09-07 06:20:00
发表于 2016-11-11 23:55 |显示全部楼层
  1. [root@CentOS_6 ~]# sed 's/a href/"{$links[id].href}"/g' /var/tmp/1.txt | awk '/links/{select=rand();sub(/id/,select);print;next}{print}'
  2.     <div class="wz"><"{$links[0.237788].href}"="#" target="_blank">复古巴黎公寓翻新</a></div></div>
  3.             </div>
  4.             <div class="h10"></div>
  5.             <h3><"{$links[0.291066].href}"="#" target="_blank">装修工具</a></h3>
  6.             <div class="picline">
  7.               <div class="jzbt"><"{$links[0.845814].href}"="#" target="_blank">
  8.                 <div class="qz"></div>
  9.                 <div class="jzbt-txt">墙砖</div>
  10.                 </a></div>
  11.               <div class="jzbt"><"{$links[0.152208].href}"="#" target="_blank">
  12.                 <div class="dz"></div>
  13.                 <div class="jzbt-txt">地砖</div>
  14.                 </a></div>
  15.               <div class="jzbt"><"{$links[0.585537].href}"="#" target="_blank">
  16.                 <div class="db"></div>
  17.                 <div class="jzbt-txt">地板</div>
  18.                 </a></div>
  19.               <div class="jzbt"><"{$links[0.193475].href}"="#" target="_blank">
  20.                 <div class="bz"></div>
  21.                 <div class="jzbt-txt">壁纸</div>
  22.                 </a></div>
  23.               <div class="jzbt"><"{$links[0.810623].href}"="#" target="_blank">
  24.                 <div class="tl"></div>
  25.                 <div class="jzbt-txt">涂料</div>
  26.                 </a></div>
  27.               <div class="jzbt"><"{$links[0.173531].href}"="#" target="_blank">

  28.                 <div class="cl"></div>
  29.                 <div class="jzbt-txt">窗帘</div>
  30.                 </a></div>
  31.             </div>
  32.           </div>
  33.         </div>
  34.         <div class="clear"></div>
  35.       </div>
复制代码

论坛徽章:
0
发表于 2016-11-12 00:27 |显示全部楼层
回复 5# moperyblue

大神。我测试了一个html 页面,如果页面上有900个href="#" ,我 区间取 1-1000 ,还是有很多没被替换。这是什么问题。

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
发表于 2016-11-12 08:28 |显示全部楼层
回复 9# 老狼01
把你测试的那个html文件发出来?


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP