Chinaunix

标题: 在grep中,如何用正则表达式严格匹配IP地址。 [打印本页]

作者: lijietz    时间: 2006-02-23 15:38
标题: 在grep中,如何用正则表达式严格匹配IP地址。
more /var/log/messages|grep -p '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.'

不可以阿。。
好像grep不支持{1,3}这个表达式??

[ 本帖最后由 lijietz 于 2006-2-23 15:39 编辑 ]
作者: lijietz    时间: 2006-02-23 15:40
[root@testdb log]# more /var/log/messages|sed -n '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\./p'
[root@testdb log]#

sed好像也不支持。。

哪位达人告诉我该如何处理阿?
作者: lijietz    时间: 2006-02-23 15:45
[root@testdb log]# grep --version
grep (GNU grep) 2.5.1

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

[root@testdb log]#
作者: icesummit    时间: 2006-02-23 15:57
0-9肯定不对呀,人家IP可是255内的哦。
作者: icesummit    时间: 2006-02-23 15:59
来个perl的先,楼下的续。

#!/usr/bin/perl -w

$file = $ARGV[0];

open( CURRENTFILE, "$file");
open( OUTFILE, ">outfile" );

while ( <CURRENTFILE> ) {

$_ =~ s/.*(\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b).*/$1/;

print OUTFILE $_;

}

close( CURRENTFILE );
close( OUTFILE );
作者: wb4deng    时间: 2006-02-23 16:06
grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' INPUT_FILE
作者: lijietz    时间: 2006-02-23 16:07
原帖由 wb4deng 于 2006-2-23 16:06 发表
grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' INPUT_FILE


多谢,我刚才也弄过了,好像没提取出来。
运行了您的脚本就可以。

找原因ing..
作者: johnny_jiang    时间: 2006-02-23 16:09
原帖由 lijietz 于 2006-2-23 15:45 发表
[root@testdb log]# grep --version
grep (GNU grep) 2.5.1

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There ...


grep 要用 \{...\}

用egrep吧,直接 {...}
作者: r2007    时间: 2006-02-24 10:39
参看以前的一个讨论贴
http://bbs.chinaunix.net/viewthread.php?tid=267992
作者: dutysmart    时间: 2009-05-23 12:04
255的问题如何解决呢
作者: lululau    时间: 2009-05-23 12:18
GNU的grep加-P(大写滴!)选项就支持Perl的正则了
作者: steel2010    时间: 2009-08-27 17:28
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]\.  吧这个重复四个
作者: greendays    时间: 2009-08-27 17:40
标题: 回复 #1 lijietz 的帖子
more /var/log/messages| sed -rn  '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/p'
more /var/log/messages|grep -P '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
more /var/log/messages|egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
这么老的帖子都翻出来了??
作者: 413xp    时间: 2012-05-04 16:44
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' file
作者: xiaoxi227    时间: 2012-05-04 16:57
grep -E



您的帖子长度不符合要求。 当前长度: 7 字节 系统限制: 10 到 20000 字节
作者: j_cle    时间: 2016-08-17 15:32
那怎么解决1-255这个问题呢~~,感觉这个用正则处理起来只是先过滤掉一部分的
作者: 杰瑞26    时间: 2016-08-17 16:02
  1. more /var/log/messages | egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
复制代码

作者: baby_神    时间: 2016-08-17 21:54
egrep '\<(25[0-5]|2[0-4][0-9]|((1[0-9]{2})|([1-9][0-9]))|[1-9])(\.(25[0-5]|2[0-4][0-9]|((1[0-9]{2})|([1-9][0-9]))|[0-9])){3}\>'

精确匹配ip地址




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2