楼 主
请教:关于利用AWK处理硬盘分区信息的初级应用
发表于 2008-01-27 21:38 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
请教:关于利用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: S:
1.1: ( 4.89GB) Active Volume FAT32
1.2: ( 5.86GB) Volume NTFS l:
1.3: ( 7.88GB) Volume FAT32 l:
Disk: 2 (974.25MB) M:
( 123KB) Unused Space
2.1: ( 974.13MB) Volume FAT16 l:
第 2 楼
发表于 2008-01-27 22:05 · 中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
第 3 楼
发表于 2008-01-27 22:45 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
两个问题通过曲线救国的办法已解决。
如何使用“:””\“""之类的符号问题仍未解决。
看来只能自己慢慢摸索了。
[ Last edited by lianjiang2004 on 2008-1-29 at 01:31 PM ]
第 4 楼
发表于 2008-01-28 00:34 · 中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
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]
没有太看清你的要求。不知道是不是象这样
第 5 楼
发表于 2008-01-28 09:26 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
第 6 楼
发表于 2008-01-28 10:03 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
楼上的代码windows下用gawk测试通过,可是dos下运行出错。
估计是所用版本较旧的原因。 网上找了很久,找到的都是windows下运行的gawk,dos下运行的很难找。
后来还是在我一前下载的一个软件包里找到了一个dos版的。
能否提供个dos下能用的gawk?
我试了以下两种都通不过。
awk ' /\[A-Z]:/ {print}' hdinfo.ini
和
awk ' /\\\] / {print}' hdinfo.ini
第 7 楼
发表于 2008-01-29 13:31 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
如何使用“:””\“"[""]"之类的符号问题仍未解决。
看来只能自己慢慢摸索了。
第 8 楼
发表于 2008-01-29 13:51 · 中国 浙江 杭州 电信
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
特殊字符用\转义
楼主的正则还需要加强啊
@echo off
gawk "$0~/:\\/ {print}" hdinfo.ini
pause
第 9 楼
发表于 2008-01-29 14:35 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
谢谢指教。
确实了解太少。
不知为何
awk ' /\\\] / {print}' hdinfo.ini
通不过。
应该已对"\]" 进行了转义。 估计也于awk版本有关。
第 10 楼
发表于 2008-01-29 20:07 · 中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
awk ' /\\\] / {print}' hdinfo.ini
这里转义是没有错误的,错就错在楼主使用了单引号,而非双引号
应该是楼主看帮助不是很仔细,单引号是用于linux、unix等系统的
在dos下是用双引号的
第 11 楼
发表于 2008-01-29 20:26 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
我用的dos版awk版本就是用单引号的。
1楼说了
是字符串的话是可以的。比如活动分区:
awk '{FS=":"}; /Active/ {print $1}' hdinfo.ini
这是能获得正确结果的。
第 12 楼
发表于 2008-01-29 20:31 · 中国 安徽 黄山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
该版本awk似乎不支持\转义,也不支持类似 [A-Z]:的用法。
今天已找到了一个dos版gawk,问题基本解决了。
也是用单引号的。
如:
gawk '/\[[A-Z]:\\\]/ {print $0}' hdinfo.ini
论坛跳转: