当前位置: 技术问答>linux和unix
Grep的一个小问题!
来源: 互联网 发布时间:2016-02-25
本文导语: 有文件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 c...
有文件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的所有行,返回结果与我预想的有差别。
这个问题存在在哪里?
请各位帮忙解答,谢谢!
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的所有行,返回结果与我预想的有差别。
这个问题存在在哪里?
请各位帮忙解答,谢谢!
|
grep '10[^34]' data.f应该返回的是所有以10开头并且10后面不是34的所有行,返回结果与我预想的有差别。
===================================================
你理解错了,应该是 所有以10开头并且10后面不是3也不是4的所有行
===================================================
你理解错了,应该是 所有以10开头并且10后面不是3也不是4的所有行
|
grep "^10[^34]" data.f
应该可以达到你的要求.
应该可以达到你的要求.