中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:关于利用AWK处理硬盘分区信息的初级应用
作者:
标题: 请教:关于利用AWK处理硬盘分区信息的初级应用 上一主题 | 下一主题
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『楼 主』:  请教:关于利用AWK处理硬盘分区信息的初级应用

请教:关于利用AWK处理硬盘分区信息的初级应用

看了awk的介绍,感觉功能强大,用于实dos下处理硬盘分区信息,应该比单纯使用strings处理,能大幅度简化代码。
可是在使用中遇到些问题,望能得到高人指点。

比如以下的信息,如何剔除指定硬盘以外的分区信息?【如去掉第二硬盘】
还有就是如何保留带有盘符的分区信息?【如保留1.1:和1.3:】

试了以下方法通不过。

awk '$1 ~ /1./ {print $1}' hdinfo.ini
原因应该是当成了数字处理,而不是字符。给1.加上引号也不行。

awk '/:\/ {print $1}' hdinfo.ini
估计是:、\等有特定含义,也没当成字符处理。

是字符串的话是可以的。比如活动分区:
awk '{FS=":"}; /Active/ {print $1}' hdinfo.ini

不知有何办法处理。谢谢。

Disk: 1 (18.63GB) M:[18.63GB] S:[Z1GC3227T]
    1.1: (   4.89GB) [C:\] Active Volume FAT32
    1.2: (   5.86GB)       Volume NTFS l:[PRO]
    1.3: (   7.88GB) [D:\] Volume FAT32 l:[DATA]
Disk: 2 (974.25MB) M:[974.25MB]
         (    123KB) Unused Space
    2.1: ( 974.13MB)       Volume FAT16 l:[CANON_DC]



Windows 一键还原
http://www.yjhy.com
2008-1-27 21:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

分区数不固定的话很难筛选的



第一高手    第二高手

2008-1-27 22:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 3 楼』:  

两个问题通过曲线救国的办法已解决。
如何使用“:””\“"[""]"之类的符号问题仍未解决。
看来只能自己慢慢摸索了。

[ Last edited by lianjiang2004 on 2008-1-29 at 01:31 PM ]



Windows 一键还原
http://www.yjhy.com
2008-1-27 22:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 4 楼』:  

C:\Documents and Settings\wjc\桌面>awk -F"." "{if($1 ==1&&$0~/ \[[A-Z]:\\\] /){p
rint $0}}" hdinfo.ini
    1.1: (   4.89GB) [C:\] Active Volume FAT32
    1.3: (   7.88GB) [D:\] Volume FAT32 l:[DATA]

没有太看清你的要求。不知道是不是象这样

2008-1-28 00:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 5 楼』:  

ok,我研究一下你的代码,有问题再请教。



Windows 一键还原
http://www.yjhy.com
2008-1-28 09:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 6 楼』:  

楼上的代码windows下用gawk测试通过,可是dos下运行出错。

估计是所用版本较旧的原因。 网上找了很久,找到的都是windows下运行的gawk,dos下运行的很难找。
后来还是在我一前下载的一个软件包里找到了一个dos版的。

能否提供个dos下能用的gawk?

我试了以下两种都通不过。
awk ' /\[A-Z]:/ {print}' hdinfo.ini

awk ' /\\\] / {print}' hdinfo.ini



Windows 一键还原
http://www.yjhy.com
2008-1-28 10:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 7 楼』:  

如何使用“:””\“"[""]"之类的符号问题仍未解决。
看来只能自己慢慢摸索了。



Windows 一键还原
http://www.yjhy.com
2008-1-29 13:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 8 楼』:  

特殊字符用\转义

楼主的正则还需要加强啊

@echo off
gawk "$0~/:\\/ {print}" hdinfo.ini
pause

2008-1-29 13:51
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 9 楼』:  

谢谢指教。
确实了解太少。
不知为何
awk ' /\\\] / {print}' hdinfo.ini
通不过。
应该已对"\]" 进行了转义。 估计也于awk版本有关。



Windows 一键还原
http://www.yjhy.com
2008-1-29 14:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 10 楼』:  

awk ' /\\\] / {print}' hdinfo.ini

这里转义是没有错误的,错就错在楼主使用了单引号,而非双引号

应该是楼主看帮助不是很仔细,单引号是用于linux、unix等系统的

在dos下是用双引号的

2008-1-29 20:07
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 11 楼』:  

我用的dos版awk版本就是用单引号的。

1楼说了

是字符串的话是可以的。比如活动分区:
awk '{FS=":"}; /Active/ {print $1}' hdinfo.ini
这是能获得正确结果的。



Windows 一键还原
http://www.yjhy.com
2008-1-29 20:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 12 楼』:  

该版本awk似乎不支持\转义,也不支持类似 [A-Z]:的用法。
今天已找到了一个dos版gawk,问题基本解决了。
也是用单引号的。
如:
gawk '/\[[A-Z]:\\\]/ {print $0}' hdinfo.ini



Windows 一键还原
http://www.yjhy.com
2008-1-29 20:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: