全部分类
移动开发与应用
WEB前端
架构与运维
程序设计
数据库
操作系统
热点技术
综合
求助grep精确匹配的问题
2054阅读 0评论
2009-08-12
greendays
分类:
| | | |
IT168安防监控频道全新上线
[] [] [] [] []
精灵
CU编号: 60772
注册:2003-6-2
最后登录: 2009-08-12
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-11 17:34
假设有三行数据
ut07kf.china
ut07kf
ut07kf.cn
只想选出ut07kf,请问用grep如何精确匹配。
ut07kf是个变量,用awk '$1=="$var"'似乎只能匹配常量。试过[[:space:]],没成功。请教高手。
您对本贴的看法:
| | |
(黑哥)
法师
CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-12
帖子:
精华:0
来自:小山村
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-11 17:37
假设$var不包含IFS字符:
CODE:
grep -x $var urfile
CODE:
awk -v v=$var '$0==v' urfile
您对本贴的看法:
__________________________________
LIVE FREE
OR
DIE!
K.I.S.S.
| | |
版主-天使
CU编号: 103062
注册:2003-10-4
最后登录: 2009-08-11
帖子:
精华:
状态:...保密...
[] [] [
博客
]
[]
发表于 2009-8-11 17:39
-w, --word-regexp
Select only those lines containing matches that form whole words. The test is that the matching substring must
either be at the beginning of the line, or preceded by a non-word constituent character. Similarly, it must be
either at the end of the line or followed by a non-word constituent character. Word-constituent characters are
letters, digits, and the underscore.
-o, --only-matching
Show only the part of a matching line that matches PATTERN.
您对本贴的看法:
__________________________________
个人BLOG
| | |
精灵
CU编号: 60772
注册:2003-6-2
最后登录: 2009-08-12
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-11 17:58
二楼awk正解,谢谢。
斑竹说得已经试过,只对letters, digits, and the underscore有效,但是。不满足条件。
您对本贴的看法:
| | |
((小学生))
天使
小学生
CU编号: 468971
注册:2006-9-24
最后登录: 2009-08-11
帖子:
精华:0
状态:...保密...
[] [] [
博客
]
[]
发表于 2009-8-11 17:59
回复 #1 yiyu_66 的帖子
-x, --line-regexp
Select only those matches that exactly match the whole line.
您对本贴的看法:
__________________________________
小学生
| | |
(黑哥)
法师
CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-12
帖子:
精华:0
来自:小山村
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-11 18:02
回复 #4 yiyu_66 的帖子
什么意思啊?
您对本贴的看法:
__________________________________
LIVE FREE
OR
DIE!
K.I.S.S.
| | |
大天使
CU编号: 637535
注册:2007-11-5
最后登录: 2009-08-11
帖子:
精华:0
来自:重庆
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-11 21:25
回复 #4 yiyu_66 的帖子
是不是你的grep命令没有-x开关?
您对本贴的看法:
__________________________________
| | |
(黑哥)
法师
CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-12
帖子:
精华:0
来自:小山村
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-11 21:49
还有一种可能,LZ的文件是dos格式。
您对本贴的看法:
__________________________________
LIVE FREE
OR
DIE!
K.I.S.S.
| | |
精灵
CU编号: 60772
注册:2003-6-2
最后登录: 2009-08-12
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-12 08:34
我没说清楚,其实每行内容类似/etc/passwd的格式,
ut07kf.china:*:50607:50000::/users/ut07kf.tokyo:/bin/ksh
ut07kf:*:103::/users/ut07kf:/bin/ksh
ut07kf.cn:*:100315:100000::/users/ut07kf.tky:/bin/ksh
所以用grep -x不行,用awk可以。
谢谢大家。
您对本贴的看法:
| | |
天使
CU编号: 690278
注册:2008-4-11
最后登录: 2009-08-12
帖子:
精华:0
状态:
...在线...
[] [] [
博客
]
[]
发表于 2009-8-12 09:37
就你这个应用而言,直接用
grep "ut07kf:" /etc/passswd
不就可以了?
再复杂可以用正则表达式。不过不管用什么你既然是要确认某个串是而比它多几个字符的不是,那总要有一种可以区分的分隔符、或固定的长度等一些加以区分吧,而只要这些存在,就容易搞定了。
您对本贴的看法:
| | |
| | | |
IT168安防监控频道全新上线
[] [] [] [] []
大天使
CU编号: 347943
注册:2005-12-11
最后登录: 2009-08-12
帖子:
精华:0
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-12 09:57
回复 #6 blackold 的帖子
可以包含IFS字符吧?
grep -x "$var"
CODE:
[root@Mylinux tmp]# var="a bc"
[root@Mylinux tmp]# cat file
a bc
xx a bc xx
[root@Mylinux tmp]# grep -x "$var" file
a bc
[root@Mylinux tmp]# grep "^$var$" file
a bc
您对本贴的看法:
__________________________________
shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/
| | |
(黑哥)
法师
CU编号: 631768
注册:2007-10-22
最后登录: 2009-08-12
帖子:
精华:0
来自:小山村
状态:
...离线...
[] [] [
博客
]
[]
发表于 2009-8-12 10:06
回复 #11 ywlscpl 的帖子
什么都可以包含。
我不是这个意思。
您对本贴的看法:
__________________________________
LIVE FREE
OR
DIE!
K.I.S.S.
| | |
» » »
2
上一篇:
请教:怎样有条件的替换行。
下一篇:
如何去除空格