提取关键字我有一个日志其中有这样的:从日志行
.....client connection.....remote=/xxx.xxx.xxx.xxx]].......
我需要提取包含上述日志中的所有行,仅打印remote=.
后的IP。这将是东西在模式:
grep "client connection" xxx.log | sed -e ....
提取关键字我有一个日志其中有这样的:从日志行
.....client connection.....remote=/xxx.xxx.xxx.xxx]].......
我需要提取包含上述日志中的所有行,仅打印remote=.
后的IP。这将是东西在模式:
grep "client connection" xxx.log | sed -e ....
grep -oP 'client connection.*remote=/\K.*?(?=])' input
打印任何东西。
,或者使用背面sed
引用:在这里的线被分为三个部分/基团,其将在后面由\1
\2
或\3
称作。每组由(
和)
包围。这里IP地址属于第二组,所以整行被第二组IP地址替换。
sed -r '/client connection/ s_(^.*remote=/)(.*?)]](.*)_\2_g' input
或者使用awk
:
awk -F'/|]]' '/client connection/{print $2}' input
试试这个:
grep 'client connection' test.txt | awk -F'[/\\]]' '{print $2}'
测试用例
test.txt
---------
abcd
.....client connection.....remote=/10.20.30.40]].......
abcs
.....client connection.....remote=/11.20.30.40]].......
.....client connection.....remote=/12.20.30.40]].......
结果
10.20.30.40
11.20.30.40
12.20.30.40
说明
grep
将候选名单的结果为仅符合客户端连接线。 awk
使用-F
分隔符来标记文本。我们请求awk
使用/
和]
分隔符来分割文本。为了使用多个分隔符,我们在[
和]
中放置了分隔符。例如,要将文本分割为=
和:
,我们会做[=:]
。
然而,在我们的情况下,分隔符的一个是]
,因为我的目的是从/x.x.x.x]
随地吐痰与/
和]
文本专门提取IP。所以我们逃过]
。 IP是分裂的第二项。
使用grep:
grep -oP '(?<=remote=/)[^\]]+' file
o
是只提取图案,而不是整条生产线。 P
是与perl类似的正则表达式。在这种情况下,我们使用“负面后顾”。它会尝试匹配字符集是不是“]”,这是由remote=/
更强大的方法是将'client connection'模式包含到'grep'中,因为这是OP所需要的。您的逻辑也可能包含在同一行中没有“客户端连接”的行。 – Inian
更健壮的方式preceeded,在this answer改进将在PCRE
模式-P
也使用GNU grep
为perl
风格regEx
匹配,但匹配问题中提出的两种模式。
grep -oP "client connection.*remote=/\K(\d{1,3}\.){3}\d{1,3}" file
10.20.30.40
11.20.30.40
12.20.30.40
这里,client connection.*remote
比赛无论是在线条图案,并从文件中提取IP。 \K
是一个PCRE
语法,可以忽略直到该点的字符串,并仅打印其后面的捕获组。
(\d{1,3}\.){3}\d{1,3}
为了匹配IP即3
组由从1
到3
长度的点,接着4th
八位字节分开数字。在包含client connection
线remote=/
和最亲密的]
之间
用awk: 能否请您尝试以下,让我们知道如何去即可。
awk '{match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/);if(substr($0,RSTART,RLENGTH)){print substr($0,RSTART,RLENGTH)}}' Input_file
你有什么试过?我们大多数人都很乐意帮助你改进自己的技艺,但不愿意担任短期无偿编程人员。在[MCVE](http://stackoverflow.com/help/mcve)中向我们展示您的工作,您期待的结果以及您获得的结果,我们将帮助您弄清楚。 – ghoti
[从字符串中提取模式]的可能的重复(http://stackoverflow.com/questions/11533063/extract-pattern-from-a-string) – tripleee
代表接近2K的代表的用户现在应该知道不要[问紧急志愿者](http://meta.stackoverflow.com/q/326569/472495)。 – halfer