中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 23:29
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何用gawk只输出第一次找到的数据?
可打印版本  1,148 / 9
第1楼 zts59 发表于 2008-08-23 12:09
中级用户 发帖 104 积分 387
如何用gawk只输出第一次找到的数据?
a.txt文本内容:
a1,b2,c3,d4,e5
a1,b2,c3,d4,e6
a1,b2,c3,d4,e7
a1,b2,c3,d4,e8
a1,b2,c3,d4,e9



用 gawk BEGIN { FS=","};/d4/{print $4,": "$5} a.txt>b.txt

出现结果:
d4:e5
d4:e6
d4:e7
d4:e8
d4:e9

如何控制只输出第一次的取值呢  就是:
d4:e5


谢谢,aa.txt只并没有规律
第2楼 pusofalse 发表于 2008-08-23 12:40
银牌会员 发帖 646 积分 1,604
for /f "delims=" %%a in ('gawk BEGIN { FS=","};/d4/{print $4,": "$5} a.txt') do @echo>>b.txt %%a&pause&exit/b
第3楼 HAT 发表于 2008-08-23 13:27
版主 发帖 5,017 积分 9,023
print之前加个判断
if(NR==1)
第4楼 zts59 发表于 2008-08-23 17:33
中级用户 发帖 104 积分 387
目标文件里面内容可能不是第一行,pusofalse是通过FOR实现,在DOS下用不了
HAT所用IF是GAWK自带的参数?还是CMD里面的IF?
第5楼 metoo 发表于 2008-08-23 18:27
初级用户 发帖 93 积分 195
对于gawk我感觉直接命令行不是太稳定,个人倾向用调用脚本的形式


[ Last edited by metoo on 2008-8-23 at 06:30 PM ]
第6楼 HAT 发表于 2008-08-23 19:37
版主 发帖 5,017 积分 9,023
看到NR==1应该能猜到是gawk里面的if吧:)
dos里面这样写行吗?
第7楼 lxmxn 发表于 2008-08-24 00:55
版主 发帖 4,938 积分 11,386
直接这样就好了吧?



to metoo:
可以说说gawk在命令行为什么不稳定吗?

to HAT:
感觉你的方法不行,不知道你测试过没呢?
第8楼 metoo 发表于 2008-08-24 06:30
初级用户 发帖 93 积分 195
Originally posted by lxmxn at 2008-8-24 12:55 AM:
直接这样就好了吧?



to metoo:
可以说说gawk在命令行为什么不稳定吗?

to HA ...

其实我也没啥依据。。因为每次我写都是脚本写的,有次同样的正则在命令行下就是不行,脚本就行
第9楼 zts59 发表于 2008-08-25 08:17
中级用户 发帖 104 积分 387
Originally posted by lxmxn at 2008-8-24 12:55 AM:
直接这样就好了吧?



to metoo:
可以说说gawk在命令行为什么不稳定吗?

to HA ...



谢谢版主,

请问一下,如果还要需要再增加入别的PRINT输出参数,那上次那个EXIT执行了后是不是不会执行后面的PRINT参数了?
第10楼 DXSX 发表于 2010-01-08 15:15
中级用户 发帖 147 积分 247
用管道

gawk BEGIN { FS=","};/d4/{print $4,": "$5} a.txt|gawk '{if (NR==1) print $0}'
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023