LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 827|回复: 4

关于grep的一个小问题。

[复制链接]
发表于 2007-12-25 14:20:41 | 显示全部楼层 |阅读模式
所使用操作系统是suse10.1 企业版 有文件data.f,其内容如下:
suse22:/sh_acess   #   cat   data.f
100   dec   c01   p01   44   hd01   233
101   dec   c02   p02   43   hd01   235
102   oct   c09   p09   46   hd04   566
104   oct   c08   p08   56   hd06   346
104   nov   c38   p09   57   hd03   455
110   may   c18   p19   57   hb03   165
111   may   c18   p29   90   hb03   399
001   dec   c04   p09   34   hdb09   443
suse22:/sh_acess   #
=====================================

使用grep正则表达式的两个简单查询以及得出的结果如下:
suse22:/sh_acess   #   grep   '11[^34]'   data.f
110   may   c18   p19   57   hb03   165
111   may   c18   p29   90   hb03   399
suse22:/sh_acess   #   grep   '10[^34]'   data.f
100   dec   c01   p01   44   hd01   233
101   dec   c02   p02   43   hd01   235
102   oct   c09   p09   46   hd04   566
110   may   c18   p19   57   hb03   165
suse22:/sh_acess   #

========================
我我对改结果存在疑问,我认为
grep   '11[^34]'   data.f应该返回的是所有以11开头并且11后面不是34的所有行,返回结果跟我想的一样。
grep   '10[^34]'   data.f应该返回的是所有以10开头并且10后面不是34的所有行,返回结果与我预想的有差别。
这个问题存在在哪里?
请各位帮忙解答,谢谢!
发表于 2007-12-25 15:29:40 | 显示全部楼层
kingway@kingway-gentoo ~ $ grep '[color="Red"]^11[^34]' data.f
110 may c18 p19 57 hb03 165
111 may c18 p29 90 hb03 399
kingway@kingway-gentoo ~ $ grep '[color="Red"]^10[^34]' data.f
100 dec c01 p01 44 hd01 233
101 dec c02 p02 43 hd01 235
102 oct c09 p09 46 hd04 566
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-25 17:05:17 | 显示全部楼层
不要第一个行首匹配不行么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-26 14:44:49 | 显示全部楼层
我打算把我学习shell的不懂的都发到这个帖子。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-26 14:45:32 | 显示全部楼层
今日一个awk的问题:
想使用awk 'begin{print"code\tstyle\n==============="} {print $1"\t"$4}' data.f给打印结果加个头,结果发现头没加上。也没有提示错误。后来才发现要将begin大写。倒~~


还有个问题,N F的一个强大功能是将变量$ P W D的返回值传入a w k并显示其目录。
NF在参数说明里说的是记录的个数,但是$NF为什么会有显示$PWD目录这个功能呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表