中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何在文本文件中搜索并提取数据?
作者:
标题: [求助]如何在文本文件中搜索并提取数据? 上一主题 | 下一主题
longobaba
新手上路





积分 4
发帖 1
注册 2007-7-1
状态 离线
『楼 主』:  [求助]如何在文本文件中搜索并提取数据? 使用 LLM 解释/回答一下

首先谢谢大家!
数据格式如下,有三万多行,现在的问题是:
如何从庞大的数据中找出Total不等于0的酒店,然后把ARRIVALS这一行的酒店名称提取出来。老婆每个月都要处理这样的数据,工作得很辛苦,请大家帮帮忙,写个批处理,鄙人在这里鞠躬了。

ARRIVALS: 10005 - Five Rams City Hotel Guangzhou

Arr Date Name #Nt #Rm Room Description Rate Plan Rate Resv Num
---------- ---------------- --- --- -------------------- --------- ------- --------
Total: 0
Guangzhou Hotel Eelan Reservations
Great Hotels Organization China Customer Support
Tel+86 27 67845050

ARRIVALS: 10006 - Guangzhou Hotel Eelan

Arr Date Name #Nt #Rm Room Description Rate Plan Rate Resv Num
---------- ---------------- --- --- -------------------- --------- ------- --------
2007-06-03 HAMILTON, MATTHE 1 1 PREMIUM TWRM PRPRTWRM 40.00 180775384
2007-06-22 ORUNSOLU, KOLAWO 7 1 PREMIUM TWRM PRPRTWRM 40.00 180546312
Total: 2
Eastrn Inn Beijing Reservations
Great Hotels Organization China Customer Support
Tel+86 27 67845050

ARRIVALS: 10007 - Eastern Inn Beijing

Arr Date Name #Nt #Rm Room Description Rate Plan Rate Resv Num
---------- ---------------- --- --- -------------------- --------- ------- --------
Total: 0
Goodsun International Business Apartment Reservations
Great Hotels Organization China Customer Support
Tel+86 27 67845050


2007-7-1 19:17
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

假设你的数据库文件为hotel.txt,在命令行执行下面的代码
gawk "{if($0~/*ARRIVALS:/)result=$0;if($0~/^Total:.*/)if($2!=0)print result}" hotel.txt


其中 Gawk 是个外部工具,Gawk 下载地址:
http://www.cn-dos.net/forum/viewthread.php?tid=31098&page=1#pid205571


2007-7-1 19:51
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

没有考虑用批处理来处理是因为文件有3万多行,太大了,用批处理来处理太慢了。


2007-7-1 19:52
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
digger
初级用户

游荡的孤魂



积分 79
发帖 29
注册 2007-4-2
来自 湖南
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

  用纯批处理测试了一下3W多行的数据,发现速度还过得去:

@echo off
:: 如果要去掉酒店编号及短横线,请把 echo !str!>>list.txt 换成 echo !str:*-!>>list.txt
set bg=%time%
cd.>list.txt
setlocal enabledelayedexpansion
for /f "tokens=1*" %%i in (test.txt) do (
if /i "%%i"=="ARRIVALS:" set str=%%j
if /i "%%i"=="Total:" if %%j neq 0 echo !str!>>list.txt
)
echo %bg% %time%
pause


2007-7-2 10:08
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: