Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234816
  • 博文数量: 57
  • 博客积分: 1149
  • 博客等级: 少尉
  • 技术积分: 584
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-29 11:35
文章分类

全部博文(57)

文章存档

2016年(1)

2014年(1)

2013年(2)

2012年(27)

2011年(26)

分类: Python/Ruby

2011-11-04 09:15:35

需求中的数据是这样的:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
  2. <html xmlns="">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>无标题文档</title>
  6. <style type="text/css">

  7. </style></head>

  8. <body >
  9. <div style='position:absolute;left:57px;top:57px;width: 133px;'>上地XXX</div>
  10. <div style='position:absolute;left:212.8px;top:60.6px;width: 26.6px;'>2011</div>
  11. <div style='position:absolute;left:269.8px;top:60.6px;width: 15.2px;'>10</div>
  12. <div style='position:absolute;left:334.4px;top:60.6px;width: 15.2px;'>27</div>
  13. <div style='position:absolute;left:380px;top:60.6px;width: 15.2px;'>15</div>
  14. <div style='position:absolute;left:57px;top:93.8px;width: 133px;'>XXX</div>
  15. <div style='position:absolute;left:226.8px;top:93.8px;width: 133px;'>XXX</div>
  16. <div style='position:absolute;left:57px;top:136.8px;width: 133px;'>北京市</div>
  17. <div style='position:absolute;left:212.8px;top:136.8px;width: 133px;'>中华人民共和国</div>
  18. <div style='position:absolute;left:57px;top:171px;width: 266px;'>北京市XXX有限公司</div>
  19. <div style='position:absolute;left:57px;top:209px;width: 266px;'>北京市海淀区上地三街金隅嘉华室</div>
  20. <div style='position:absolute;left:57px;top:243.2px;width: 266px;'>地址如果需要写到第二行,就是这里</div>
  21. <div style='position:absolute;left:57px;top:275.2px;width: 133px;'>100085</div>
  22. <div style='position:absolute;left:226.8px;top:275.2px;width: 133px;'>01234567890用户编码</div>
  23. <div style='position:absolute;left:153.4px;top:294px;'></div>
  24. <div style='position:absolute;left:380px;top:294px;'></div>
  25. <div style='position:absolute;left:120.2px;top:324.4px;'></div>
  26. <div style='position:absolute;left:184.8px;top:324.4px;'></div>
  27. <div style='position:absolute;left:76px;top:380px; width: 114px;'>上衣</div>
  28. <div style='position:absolute;left:230.4px;top:380px; width: 19px;'>1</div>
  29. <div style='position:absolute;left:268.4px;top:380px; width: 19px;'>2</div>
  30. <div style='position:absolute;left:314px;top:380px; width: 38px;'>90$</div>
  31. <div style='position:absolute;left:374.8px;top:380px; width: 38px;'>china</div>
  32. <div style='position:absolute;left:475px;top:57px; width: 266px;'>收件人</div>
  33. <div style='position:absolute;left:444.6px;top:88.8px;width: 133px;'>北京市</div>
  34. <div style='position:absolute;left:627px;top:88.8px;width: 133px;'>中华人民共和国</div>
  35. <div style='position:absolute; left:444.6px; top:126.8px; width: 266px;'>北京市XX有限公司</div>
  36. <div style='position:absolute; left:444.6px; top:161px; width: 266px;'>北京市海淀区上地三街金隅嘉华大厦</div>
  37. <div style='position:absolute; left:444.6px; top:199px; width: 266px;'>地址如果需要写到第二行,就是这里</div>
  38. <div style='position:absolute; left:444.6px; top:243.2px; width: 133px;'>100085</div>
  39. <div style='position:absolute; left:627px; top:243.2px; width: 133px;'>XXX</div>
  40. <div style='position:absolute; left:447px; top:274.2px; width: 22.8px;'>100</div>
  41. <div style='position:absolute; left:504px; top:274.2px; width: 19px;'>50</div>
  42. <div style='position:absolute; left:553.4px; top:274.2px; width: 19px;'>30</div>
  43. <div style='position:absolute; left:587.6px; top:274.2px; width: 22.8px;'>150000</div>
  44. <div style='position:absolute; left:694px; top:270.4px; width: 76px;'>2.15</div>
  45. <div style='position:absolute; left:444.6px; top:311.6px; width: 76px;'>30$</div>
  46. <div style='position:absolute; left:570px; top:311.6px; width: 76px;'>0$</div>
  47. <div style='position:absolute; left:684px; top:311.6px; width: 76px;'>30$</div>

  48. <div style='position:absolute;left:76px;top:398px; width: 114px;'>上衣1</div>
  49. <div style='position:absolute;left:230.4px;top:398px; width: 19px;'>1.1</div>
  50. <div style='position:absolute;left:268.4px;top:398px; width: 19px;'>2.1</div>
  51. <div style='position:absolute;left:314px;top:398px; width: 38px;'>90.1$</div>
  52. <div style='position:absolute;left:374.8px;top:398px; width: 38px;'>china.1</div>

  53. <div style='position:absolute;left:76px;top:416px; width: 114px;'>上衣2</div>
  54. <div style='position:absolute;left:230.4px;top:416px; width: 19px;'>1.2</div>
  55. <div style='position:absolute;left:268.4px;top:416px; width: 19px;'>2.2</div>
  56. <div style='position:absolute;left:314px;top:416px; width: 38px;'>90.2$</div>
  57. <div style='position:absolute;left:374.8px;top:416px; width: 38px;'>china.2</div>

  58. <div style='position:absolute;left:76px;top:434px; width: 114px;'>上衣3</div>
  59. <div style='position:absolute;left:230.4px;top:434px; width: 19px;'>1.3</div>
  60. <div style='position:absolute;left:268.4px;top:434px; width: 19px;'>2.3</div>
  61. <div style='position:absolute;left:314px;top:434px; width: 38px;'>90.3$</div>
  62. <div style='position:absolute;left:374.8px;top:434px; width: 38px;'>china.3</div>

  63. <div style='position:absolute;left:76px;top:452px; width: 114px;'>上衣.4</div>
  64. <div style='position:absolute;left:230.4px;top:452px; width: 19px;'>1.4</div>
  65. <div style='position:absolute;left:268.4px;top:452px; width: 19px;'>2.4</div>
  66. <div style='position:absolute;left:314px;top:452px; width: 38px;'>90.4$</div>
  67. <div style='position:absolute;left:374.8px;top:452px; width: 38px;'>china.4</div>
  68. </body>
  69. </html>


当时制作这个html页面用来打印ems的快递单。但是发现对不齐。正好需要将这些坐标数字做-38处理
也就是left和top后面的数字width不要改变
经过群里面大家给的意见最后使用perl完成了这一需求

perl  -ne '/left:(\d+\.?\d+)px\;\s*top:(\d+\.?\d+)px\;/;$d=$1-38;$d1=$2-38;s/left:(\d+\.?\d+)px;/left:"$d"px\;/;s/top:(\d+\.?\d+)px;/top:"$d1"px\;/;print'


然而awk就没有那么理想了
awk 'BEGIN{FS=";";OFS=";"}{for(i=1;i<=NF;i++){if($i~/^left/ || $i~/^top/){a=match($i,/[0-9]+\.?[0-9]?/);b=RLENGTH;$i=substr($i,1,a-1)""substr($i,a,b)-38"px"}};NF+=1;print $0}'

得出来的结果在所有行后面多加了一个;  我研究半天也没有找到好办法解决。
如果看到这边博文的您有办法解决,请回复。非常感谢
阅读(1744) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~