免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: skycity0210
打印 上一主题 下一主题

谁能帮我处理如下的文件?(以文件的某一行排序后重组)谢谢了!!  关闭 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
21 [报告]
发表于 2005-11-18 14:07 |只看该作者
哼哼,算你们牛

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
22 [报告]
发表于 2005-11-18 14:11 |只看该作者
原帖由 flw 于 2005-11-18 14:06 发表
死 waker,你的 190 个字节,我的 177 个字节,我的比你的短哦~
赶紧给我加个小手

你的比我的长 :em11: 我才164

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
23 [报告]
发表于 2005-11-18 14:14 |只看该作者
原帖由 寂寞烈火 于 2005-11-18 14:11 发表

你的比我的长 :em11: 我才164

我刚才去掉了所有的空格,现在只剩下 160 啦。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
24 [报告]
发表于 2005-11-18 14:16 |只看该作者
原帖由 flw 于 2005-11-18 14:14 发表

我刚才去掉了所有的空格,现在只剩下 160 啦。



BT

我手工,没有长度

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
25 [报告]
发表于 2005-11-18 14:18 |只看该作者
原帖由 寂寞烈火 于 2005-11-18 14:11 发表

你的比我的长 :em11: 我才164

我刚才又把变量名改短了些,现在是 152 个字符了。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
26 [报告]
发表于 2005-11-18 14:19 |只看该作者
原帖由 flw 于 2005-11-18 14:14 发表

我刚才去掉了所有的空格,现在只剩下 160 啦。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
27 [报告]
发表于 2005-11-18 14:22 |只看该作者
应该比效率,处理一个大文件,看谁的快

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
28 [报告]
发表于 2005-11-18 14:23 |只看该作者
原帖由 mocou 于 2005-11-18 14:22 发表
应该比效率,处理一个大文件,看谁的快

比效率我就不这么写了。我用 C!哈哈……

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
29 [报告]
发表于 2005-11-18 14:24 |只看该作者
原帖由 寂寞烈火 于 2005-11-18 14:19 发表


表哭嘛!
其实你也有很多空格可以去掉的嘛!

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
30 [报告]
发表于 2005-11-18 15:12 |只看该作者
我也来一个,虽然我的比你长,但是我得思路更加的清晰:



问题: 文件要以含“DRILL_SIZE=”来排序,并重组“NUM=”的那行

数据文件file

  1. TOOLS {
  2.     NUM=0
  3.     SHAPE=HOLE
  4.     TYPE=NON_PLATED
  5.     TYPE2=STANDARD
  6.     MIN_TOL=3.15
  7.     MAX_TOL=3.15
  8.     BIT=
  9.     FINISH_SIZE=40
  10.     DRILL_SIZE=45.2755905511811
  11.     SLOT_LENGTH=0
  12. }

  13. TOOLS {
  14.     NUM=1
  15.     SHAPE=HOLE
  16.     TYPE=PLATED
  17.     TYPE2=STANDARD
  18.     MIN_TOL=3.15
  19.     MAX_TOL=3.15
  20.     BIT=
  21.     FINISH_SIZE=12
  22.     DRILL_SIZE=17.71653543307087
  23.     SLOT_LENGTH=0
  24. }

  25. TOOLS {
  26.     NUM=2
  27.     SHAPE=HOLE
  28.     TYPE=PLATED
  29.     TYPE2=STANDARD
  30.     MIN_TOL=3.15
  31.     MAX_TOL=3.15
  32.     BIT=
  33.     FINISH_SIZE=22
  34.     DRILL_SIZE=27.55905511811024
  35.     SLOT_LENGTH=0
  36. }

  37. TOOLS {
  38.     NUM=3
  39.     SHAPE=HOLE
  40.     TYPE=PLATED
  41.     TYPE2=STANDARD
  42.     MIN_TOL=3.15
  43.     MAX_TOL=3.15
  44.     BIT=
  45.     FINISH_SIZE=28
  46.     DRILL_SIZE=33.46456692913386
  47.     SLOT_LENGTH=0
  48. }

  49. TOOLS {
  50.     NUM=4
  51.     SHAPE=HOLE
  52.     TYPE=PLATED
  53.     TYPE2=STANDARD
  54.     MIN_TOL=3.15
  55.     MAX_TOL=3.15
  56.     BIT=
  57.     FINISH_SIZE=35
  58.     DRILL_SIZE=41.33858267716536
  59.     SLOT_LENGTH=0
  60. }

复制代码


PHP命令行代码
  1. php -r'$f=file_get_contents(file);preg_match_all("/\\TOOLS {.+?DRILL_SIZE=([\\d\\.]+).+?\\}/s",$f,$a);asort($a[1]);foreach($a[1] as $k=>$v)echo preg_replace("/(?<=NUM=)\\d+/",++$i,$a[0][$k])."\\n";'
复制代码


PHP代码分析
  1. <?php

  2. /// php -r'$f=file_get_contents(file);preg_match_all("/\\TOOLS {.+?DRILL_SIZE=([\\d\\.]+).+?\\}/s",$f,$a);asort($a[1]);foreach($a[1] as $k=>$v)echo preg_replace("/(?<=NUM=)\\d+/",++$i,$a[0][$k])."\n";'

  3. /// 读取文件内容
  4. $f=file_get_contents("e:\\usr\\local\\www\\work\\data.txt");

  5. /// 匹配每一个TOOLS { ... } 的部分,同时匹配DRILL_SIZE=...的部分
  6. preg_match_all("/\\TOOLS {.+?DRILL_SIZE=([\\d\\.]+).+?\\}/s",$f,$a);

  7. /// 查看数组$a的结构
  8. echo('查看数组$a的结构n');
  9. var_export($a);

  10. /// 排序数组$a的子数组$a[1],并保留hash索引
  11. asort($a[1]);

  12. echo('查看数组$a的结构,此时$a[1]已经排序n');
  13. /// 查看数组$a的结构,此时$a[1]已经排序
  14. var_export($a);

  15. echo('遍历$a[1],并输出$a[0]对应的项,同时递增替换NUM=...n');
  16. /// 遍历$a[1],并输出$a[0]对应的项,同时递增替换NUM=...
  17. foreach($a[1] as $k=>$v) echo preg_replace("/(?<=NUM=)\\d+/",++$i,$a[0][$k])."\n";

  18. ?>
复制代码


PHP代码调试结果

  1. ---------- PHP代码调试 ----------
  2. Content-type: text/html
  3. X-Powered-By: PHP/4.3.10

  4. 查看数组$a的结构narray (
  5.   0 =>
  6.   array (
  7.     0 => 'TOOLS {
  8.     NUM=0
  9.     SHAPE=HOLE
  10.     TYPE=NON_PLATED
  11.     TYPE2=STANDARD
  12.     MIN_TOL=3.15
  13.     MAX_TOL=3.15
  14.     BIT=
  15.     FINISH_SIZE=40
  16.     DRILL_SIZE=45.2755905511811
  17.     SLOT_LENGTH=0
  18. }',
  19.     1 => 'TOOLS {
  20.     NUM=1
  21.     SHAPE=HOLE
  22.     TYPE=PLATED
  23.     TYPE2=STANDARD
  24.     MIN_TOL=3.15
  25.     MAX_TOL=3.15
  26.     BIT=
  27.     FINISH_SIZE=12
  28.     DRILL_SIZE=17.71653543307087
  29.     SLOT_LENGTH=0
  30. }',
  31.     2 => 'TOOLS {
  32.     NUM=2
  33.     SHAPE=HOLE
  34.     TYPE=PLATED
  35.     TYPE2=STANDARD
  36.     MIN_TOL=3.15
  37.     MAX_TOL=3.15
  38.     BIT=
  39.     FINISH_SIZE=22
  40.     DRILL_SIZE=27.55905511811024
  41.     SLOT_LENGTH=0
  42. }',
  43.     3 => 'TOOLS {
  44.     NUM=3
  45.     SHAPE=HOLE
  46.     TYPE=PLATED
  47.     TYPE2=STANDARD
  48.     MIN_TOL=3.15
  49.     MAX_TOL=3.15
  50.     BIT=
  51.     FINISH_SIZE=28
  52.     DRILL_SIZE=33.46456692913386
  53.     SLOT_LENGTH=0
  54. }',
  55.     4 => 'TOOLS {
  56.     NUM=4
  57.     SHAPE=HOLE
  58.     TYPE=PLATED
  59.     TYPE2=STANDARD
  60.     MIN_TOL=3.15
  61.     MAX_TOL=3.15
  62.     BIT=
  63.     FINISH_SIZE=35
  64.     DRILL_SIZE=41.33858267716536
  65.     SLOT_LENGTH=0
  66. }',
  67.   ),
  68.   1 =>
  69.   array (
  70.     0 => '45.2755905511811',
  71.     1 => '17.71653543307087',
  72.     2 => '27.55905511811024',
  73.     3 => '33.46456692913386',
  74.     4 => '41.33858267716536',
  75.   ),
  76. )查看数组$a的结构,此时$a[1]已经排序narray (
  77.   0 =>
  78.   array (
  79.     0 => 'TOOLS {
  80.     NUM=0
  81.     SHAPE=HOLE
  82.     TYPE=NON_PLATED
  83.     TYPE2=STANDARD
  84.     MIN_TOL=3.15
  85.     MAX_TOL=3.15
  86.     BIT=
  87.     FINISH_SIZE=40
  88.     DRILL_SIZE=45.2755905511811
  89.     SLOT_LENGTH=0
  90. }',
  91.     1 => 'TOOLS {
  92.     NUM=1
  93.     SHAPE=HOLE
  94.     TYPE=PLATED
  95.     TYPE2=STANDARD
  96.     MIN_TOL=3.15
  97.     MAX_TOL=3.15
  98.     BIT=
  99.     FINISH_SIZE=12
  100.     DRILL_SIZE=17.71653543307087
  101.     SLOT_LENGTH=0
  102. }',
  103.     2 => 'TOOLS {
  104.     NUM=2
  105.     SHAPE=HOLE
  106.     TYPE=PLATED
  107.     TYPE2=STANDARD
  108.     MIN_TOL=3.15
  109.     MAX_TOL=3.15
  110.     BIT=
  111.     FINISH_SIZE=22
  112.     DRILL_SIZE=27.55905511811024
  113.     SLOT_LENGTH=0
  114. }',
  115.     3 => 'TOOLS {
  116.     NUM=3
  117.     SHAPE=HOLE
  118.     TYPE=PLATED
  119.     TYPE2=STANDARD
  120.     MIN_TOL=3.15
  121.     MAX_TOL=3.15
  122.     BIT=
  123.     FINISH_SIZE=28
  124.     DRILL_SIZE=33.46456692913386
  125.     SLOT_LENGTH=0
  126. }',
  127.     4 => 'TOOLS {
  128.     NUM=4
  129.     SHAPE=HOLE
  130.     TYPE=PLATED
  131.     TYPE2=STANDARD
  132.     MIN_TOL=3.15
  133.     MAX_TOL=3.15
  134.     BIT=
  135.     FINISH_SIZE=35
  136.     DRILL_SIZE=41.33858267716536
  137.     SLOT_LENGTH=0
  138. }',
  139.   ),
  140.   1 =>
  141.   array (
  142.     1 => '17.71653543307087',
  143.     2 => '27.55905511811024',
  144.     3 => '33.46456692913386',
  145.     4 => '41.33858267716536',
  146.     0 => '45.2755905511811',
  147.   ),
  148. )遍历$a[1],并输出$a[0]对应的项,同时递增替换NUM=...nTOOLS {
  149.     NUM=1
  150.     SHAPE=HOLE
  151.     TYPE=PLATED
  152.     TYPE2=STANDARD
  153.     MIN_TOL=3.15
  154.     MAX_TOL=3.15
  155.     BIT=
  156.     FINISH_SIZE=12
  157.     DRILL_SIZE=17.71653543307087
  158.     SLOT_LENGTH=0
  159. }
  160. TOOLS {
  161.     NUM=2
  162.     SHAPE=HOLE
  163.     TYPE=PLATED
  164.     TYPE2=STANDARD
  165.     MIN_TOL=3.15
  166.     MAX_TOL=3.15
  167.     BIT=
  168.     FINISH_SIZE=22
  169.     DRILL_SIZE=27.55905511811024
  170.     SLOT_LENGTH=0
  171. }
  172. TOOLS {
  173.     NUM=3
  174.     SHAPE=HOLE
  175.     TYPE=PLATED
  176.     TYPE2=STANDARD
  177.     MIN_TOL=3.15
  178.     MAX_TOL=3.15
  179.     BIT=
  180.     FINISH_SIZE=28
  181.     DRILL_SIZE=33.46456692913386
  182.     SLOT_LENGTH=0
  183. }
  184. TOOLS {
  185.     NUM=4
  186.     SHAPE=HOLE
  187.     TYPE=PLATED
  188.     TYPE2=STANDARD
  189.     MIN_TOL=3.15
  190.     MAX_TOL=3.15
  191.     BIT=
  192.     FINISH_SIZE=35
  193.     DRILL_SIZE=41.33858267716536
  194.     SLOT_LENGTH=0
  195. }
  196. TOOLS {
  197.     NUM=5
  198.     SHAPE=HOLE
  199.     TYPE=NON_PLATED
  200.     TYPE2=STANDARD
  201.     MIN_TOL=3.15
  202.     MAX_TOL=3.15
  203.     BIT=
  204.     FINISH_SIZE=40
  205.     DRILL_SIZE=45.2755905511811
  206.     SLOT_LENGTH=0
  207. }

  208. 输出完成 (耗时 0 秒) - 正常终止
复制代码


[ 本帖最后由 HonestQiao 于 2005-11-18 15:24 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP