0

我需要过滤掉所有加入我的服务器的主机名/IP。

我有一个日志文件,但我不知道我可以使用什么正则表达式,我已经尝试过在这里搜索。

也许你能帮帮我?

日志:

03[22:56] * Jason (~Jason@33-33-33-33.rev.sfr.net) has joined #talk
03[22:56] * NotJason (~NotJason@12.34.22.22) has joined #talk
4

2 回答 2

0

也许你应该试试这个:

(?<=@).+?(?=\))

. 匹配任何字符

+ 一次或多次

? 使其不贪婪,即搜索将在第一次出现时停止

?=积极前瞻(寻找)并停止)

更新:

用 grep 会是这样

grep -o -P  '(?<=@)(.+?)(?=\))' logfile > file2

?<=是正面看后面(后面找@)。

-o将只打印匹配的部分。

-Pperl-regexp(PATTERN 是 Perl 正则表达式)

于 2015-08-22T10:30:53.030 回答
0

你允许在昵称中使用括号吗?如果没有,您可以尝试类似

$ cat logfile | grep -o \(.*\) | tr -d '()'

如果是,您需要告诉我们更多关于昵称可以是什么以及聊天室名称可以是什么的信息。否则,当昵称或房间名称包含空格或 () 时,此处提供的所有正则表达式可能会遗漏某些情况。

于 2015-08-22T10:54:45.943 回答