免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: foxwhilter
打印 上一主题 下一主题

如何使用grep精确匹配一个单词 [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
11 [报告]
发表于 2004-12-06 12:02 |只看该作者

如何使用grep精确匹配一个单词

這與你用啥 OS 用啥 SHELL 無關...
請問你測試用的 command 是甚麼?
能貼一下內容與結果嗎?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
12 [报告]
发表于 2004-12-06 12:51 |只看该作者

如何使用grep精确匹配一个单词

原帖由 "steal" 发表:


sco ksh下测试不对

那就是grep的版本到问题!

论坛徽章:
0
13 [报告]
发表于 2004-12-06 14:00 |只看该作者

如何使用grep精确匹配一个单词

GNU grep 中的特殊字符 \b \B \< \> \w \W 并非 POSIX 中定义的 regex (参见: IEEE Std 1003.1).  
故很多平台的 grep 不支持。
rifle 该用户已被删除
14 [报告]
发表于 2004-12-06 14:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
15 [报告]
发表于 2004-12-06 14:56 |只看该作者

如何使用grep精确匹配一个单词

解決問題的方法大致分為:
1) 發揮現有工具的極限
2) 換一個工具
各位自行做選擇吧...

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2004-12-09 10:41 |只看该作者

如何使用grep精确匹配一个单词

不好意思,都可以
刚才不小心多了一个空格
谢谢网中人

  1. grep -w 'abc' file
  2. grep 'abe\>' file
复制代码
  1. grep '\<abe\>' file
复制代码



我的grep是:GNU grep2.5.1

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
17 [报告]
发表于 2004-12-09 10:47 |只看该作者

如何使用grep精确匹配一个单词

  1. [netman@www tmp]$ echo "abc" | grep '\<abc\>'
  2. abc
  3. [netman@www tmp]$ echo "abc" | grep -w 'abc'
  4. abc
  5. [netman@www tmp]$ echo "abcd" | grep -w 'abc'
  6. [netman@www tmp]$ echo "abcd" | grep '\<abc\>'
  7. [netman@www tmp]$ grep --version
  8. grep (GNU grep) 2.4.2

  9. Copyright 1988, 1992-1999, 2000 Free Software Foundation, Inc.
  10. This is free software; see the source for copying conditions. There is NO
  11. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
复制代码

论坛徽章:
0
18 [报告]
发表于 2006-02-05 19:55 |只看该作者
看着网中人先生的文章,觉得受益不少,不过这里,好象版本号为2.5.1的grep与2.4.2
的grep在精确查找上面有些差别
2.4.2在精确查找的时候,好象都是这样:

  1.     grep '\<48\>;'
复制代码

2.5.1的则是这样:

  1.     grep '\<48\>'
复制代码

相差一个分号──“;”

下面是我的测试shell与输出结果



  1. guokai@superworker:~/temp$ echo "48" | grep '\<48\>'
  2. 48
  3. guokai@superworker:~/temp$ echo "48" | grep "\<48\>"
  4. 48
  5. guokai@superworker:~/temp$ echo "483" | grep "\<48\>"
  6. guokai@superworker:~/temp$ echo "483" | grep '\<48\>'

  7. guokai@superworker:~/temp$ grep --version
  8. grep (GNU grep) 2.5.1

  9. Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
  10. This is free software; see the source for copying conditions. There is NO
  11. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

复制代码

[ 本帖最后由 caesar1985 于 2006-2-5 19:56 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2006-02-05 20:06 |只看该作者
原帖由 steal 于 2004-12-6 11:29 发表


sco ksh下测试不对


Gnu grep 才支援 \< \>
試試
grep '[ \t][ \t]*word[ \t][ \t]*' infile

论坛徽章:
0
20 [报告]
发表于 2006-02-06 06:56 |只看该作者


[ 本帖最后由 fg008 于 2006-2-6 07:09 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP