中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-06 19:47
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如果将文件中相同的部分替换掉? 查看 1,725 回复 20
楼 主 [求助]如果将文件中相同的部分替换掉? 发表于 2007-12-05 14:27 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
我要处理的文件内容如下,
希望能将其中每行上面相同的部分替换成“,”,从而生成一个csv文件。



上海华泾新村二手房出售(地址:徐汇区华泾路880弄1楼)详情####房产编号: F52532828##省 市: 上海 物业名称: 华泾新村##所在区县: 徐汇 物业地址: 徐汇区华泾路880弄1楼##房  型: 2室1厅1卫 房  龄: 年##产权说明: 个人产权 业主报价: 55 万元/套##建筑面积: 57.2平方米 使用面积: 平方米##面积说明: ##房屋朝向: 南 所在楼层: 1层(共6层)##物业类型: 普通住宅 物业费用: 元/平方米·月##装修情况: 简装修##周边设施: ##交通说明: 770,718,714,804等##中介服务: ##看房时间: 提前联系##登记日期: 2007-12-3 有效期: 不限##备  注: 赠送维修基金,煤气等设备####>>>联系方式 ( 好年华上中西路店 )##联 系 人: 请恰值班人员##联系电话: 54816012 54816013##手机: ##QQ: ##email: ##


我现在的做法是人工分析出相同的部分,然后通过类似下面的批处理来完成替换:



fr data.txt -f:"##网上房地产-上海二手房:上海" -t:"##上海"
sleep 2s

fr data.txt -f:"出售详情####>>>" -t:","
sleep 2s
fr data.txt -f:"(出售)详情: 房产编号:" -t:","
sleep 2s
fr data.txt -f:"##省 市:" -t:","
sleep 2s
fr data.txt -f:"物业名称: " -t:","
sleep 2s
fr data.txt -f:"##所在区县:" -t:","
sleep 2s
fr data.txt -f:"物业地址:" -t:","
sleep 2s
2 发表于 2007-12-05 14:29 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
我的期望是能自动识别出每行中相同的部分,比如我上面写到的“出售详情####>>>”、"(出售)详情: 房产编号:"等等。
3 发表于 2007-12-05 14:30 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
不一定费用批处理完成,主要探讨识别的思路。

主要的困难就是长度和位置的不固定。
4 发表于 2007-12-05 15:59 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
说一下背景。

我从\fangduo.com下载房屋的详情网页,转成TXT,得到:



上海华泾新村二手房出售(地址:徐汇区华泾路880弄1楼)详情

房产编号: F52532828
省 市: 上海 物业名称: 华泾新村
所在区县: 徐汇 物业地址: 徐汇区华泾路880弄1楼
房  型: 2室1厅1卫 房  龄: 年
产权说明: 个人产权 业主报价: 55 万元/套
建筑面积: 57.2平方米 使用面积: 平方米
面积说明:
房屋朝向: 南 所在楼层: 1层(共6层)
物业类型: 普通住宅 物业费用: 元/平方米·月
装修情况: 简装修
周边设施:
交通说明: 770,718,714,804等
中介服务:
看房时间: 提前联系
登记日期: 2007-12-3 有效期: 不限
备  注: 赠送维修基金,煤气等设备

>>>联系方式 ( 好年华上中西路店 )
联 系 人: 请恰值班人员
联系电话: 54816012 54816013
手机:
QQ:
email:



然后希望能提取其中各项信息来生成CSV文件。

目前的做法是我先把它转成一个长字符串,手工整理出其中重复的部分。然后进行替换。比如
fr data.txt -f:"出售详情####>>>" -t:","
最后得到CSV文件。

现在就是觉得这样的手工整理其中重复的部分是在太累了,研究用怎么样的思路可以写小程序来达到自动分析和提取的效果。
5 发表于 2007-12-05 16:43 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
看了半天,看得一头雾水,到底要达到什么样的要求?你所说的“重复”是什么意思?

最好举例说明源文件的格式,然后说明希望得到的文件格式。

另外,fr 是你自己做的脚本么?
6 发表于 2007-12-05 19:00 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
雾水中.....
7 发表于 2007-12-05 23:01 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
Originally posted by lxmxn at 2007-12-5 04:43 PM:
看了半天,看得一头雾水,到底要达到什么样的要求?你所说的“重复”是什么意思?

最好举例说明源文件的格式,然后说明希望得到的文件格式。

另外,fr 是你自己做的脚本么?



不好意思,可能没说明白,我重新说一下:

我现在得到的数据每行都想1楼那样,类似下面这样:

##上海金榜三期二手房出售(地址:沧源路770弄)详情####房产编号: ##省 市: 上海 物业名称: 金榜三期##所在区县: 闵行 物业地址: 沧源路770弄……
##上海林梅新村二手房出售(地址:三林路788弄)详情####房产编号: 64##省 市: 上海 物业名称: 林梅新村##所在区县: 浦东 物业地址: 三林路788弄……
##上海平南一村二手房出售(地址:平南一村)详情####房产编号: F52836384##省 市: 上海 物业名称: 平南一村##所在区县: 闵行 物业地址: 平南一村……



上面这是3行。

我现在想要做的
1,就是想出一个思路来识别出其中每行重复的内容,也就是首先要能识别出其中的下列信息是重复的(只是“ (*)”部分不同)

##上海(*)二手房出售(地址:(*))详情####房产编号: (*)##省 市: (*) 物业名称: (*)##所在区县: (*) 物业地址: (*)……

2,第二步就是把识别出来的这些重复(相同)的部分,在替换成“,”,把数据文件变成CSV格式文件,以便后续的进一步处理。
8 发表于 2007-12-05 23:05 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
附件是待处理的样本数据。
附件
data.rar (67.06 KiB, 下载次数: 4)
9 发表于 2007-12-05 23:13 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
fr是一个用来查找替换的小工具。

===============================================================================
find and replace Ver 2.0.3.624 by BaiYang / 2004 - 2006, Freeware
===============================================================================
Find string in files or pipe, and replace it to another string

USAGE: fr [filePattern1 filePattern2 ...] {FindOption:StringToFind}
{ReplaceOption:StringToReplacement} [OtherOptions]


附件是希望的处理后的情况
附件
data.rar (61.43 KiB, 下载次数: 4)
10 发表于 2007-12-05 23:22 ·  中国 广东 广州 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
MS_office 中有专门解决这个的方案
设定execl的源位置为那个网站,剩下的记不清了,采集到后你想存什么格式都行
11 发表于 2007-12-05 23:55 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
Originally posted by everest79 at 2007-12-5 11:22 PM:
MS_office 中有专门解决这个的方案
设定execl的源位置为那个网站,剩下的记不清了,采集到后你想存什么格式都行



前面给大家看的待处理的数据,是抓几个网页组合出来的。

我对excel了解有限,但是设置源位置的方式,我好像只成功的抓到一个页面上的信息。

能否实现:按照类似下面链接指向页面作为列表,把几千条(需要翻页)信息的详情(每一条点开)提取成excel哪?
http://www.fangduo.com/sh/sellsearch.asp?wysx=%D7%A1%D5%AC&yx=%B3%F6%CA%DB&city=%C9%CF%BA%A3&quyu=&wylx=&shi=&ting=&gezhong=&wydz=&zj1=50&zj2=80&sx=300
12 发表于 2007-12-06 00:19 ·  中国 广西 玉林 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
估计是要处理成这样:
金榜三期,沧源路770弄, ,,上海,金榜三期,闵行,沧源路770弄……
林梅新村,三林路788弄,64,上海,林梅新村,浦东,三林路788弄……
平南一村,平南一村,F52836384,上海,平南一村,闵行,平南一村……
13 发表于 2007-12-06 01:02 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
重复的部分是不是固定格式的?

如果不是固定的,你的意思是不是要让程序来找到这些重复的部分,然后替换成(,)?
14 发表于 2007-12-06 01:08 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
awk "NF>0{sub(/省 市/,\",\");sub(/房  型:/,\",\");sub(/万元\/套/,\",\");sub(/备  注:/,\",\");sub(/房  龄:/,\",\");gsub (/元\/平方米·月/,\",\");gsub(/平方米/,\",\");sub(/>>>联系方式/,\",\");for(i =2;i<=NF;i++){if($i~/#+.*:/)gsub(/#+.*:/,\",\",$i);if($i~/#/)gsub(/#+/,\",\",$i);if($i~/:$/)gsub(/.*:$/,\",\",$i)};gsub(/+/,\"\");print $0}" dat.txt



上海金榜三期二手房出售(地址:沧源路770弄)详情####房产编号:,上海,金榜三期,闵行,沧
源路770弄,,2室1厅1卫,6年,产权,74,,81.34,,,,,南,1/6,多层住宅,,,豪华,银行,邮电局,
超市,医院,公园,学校,商场,菜场,,中介勿扰,提前联系,2007-12-3,不限,,,,(鼎族房产东川
店),联系,朱庆龙,13681834310,13681834310,464131674,



用gawk工具可能可以,写成这样,真怕挨打:P:P
下面是一个前辈搜集的工具。里面有gawk
http://www.vkill.net/tools.html

[ Last edited by junchen2 on 2007-12-6 at 01:37 AM ]
15 发表于 2007-12-06 02:43 ·  中国 广东 广州 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
Originally posted by honghunter at 2007-12-5 11:55 PM:



前面给大家看的待处理的数据,是抓几个网页组合出来的。

我对excel了解有限,但是设置源位置的方式,我好像只成功的抓到一个页面上的信息 ...

静态的html,你在导入任一页的WEB数据时只需要先将那个查询保存下来,本来就是文本格式,查询内容除了web地址有变化外其它是一样的,这样你可以通过脚本或宏来动态引用这个查询,并可以定义在每查询完毕后只按你规定的格式来保留相应表格的数据
论坛跳转: