从文件中提取IP地址

时间:2018-08-01 17:03:19

标签: grep

我有一个日志文件,两行之间有类似“,true-client-ip = [1.1.1.1]”之类的字符串。我想编写一个grep / sed命令从文件中提取IP。提取此输出并将其写入另一个文件的最佳方法是什么?

cache-control=[no-cache, max-age=0],origin=[https://www.example.com],pragma=[no-cache],te=[chunked;q=1.0],true-client-ip=[108.81.148.189],user-agent=[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299]

1 个答案:

答案 0 :(得分:1)

您可以使用表达式:

([0-9]{1,3}\.){3}[0-9]{1,3}

您可以将grep命令的输出写入一个新文件,如下所示:

 grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' yourlogfile.txt >> ipfile.txt

第二种选择是使用Perl方言,并在true-client-ip字段之后使用向后查找来提取IP。

grep -Po '(?<=true-client-ip=\[)[^\]]+' yourlogfile.txt >> ipfile.txt

ipfile.txt 现在包含:

108.81.148.189