我有一份报告,其中包含有关服务器列表的信息。我想要搜索此列表的正常运行时间超过一定数量,以及服务器的IP。我一直在使用notepad++进行搜索,但是sed语法也可以。报告中的数据如下:
some.dns.com
up 720 days,
some version
several lines of disk space information, between 14 and 16 lines
Connection to 10.1.1.1 closed.
some.other.dns
up 132 days,
some version
several lines of disk space information, between 14 and 16 lines
Connection to 10.1.1.2 closed.到目前为止,我已经提出了以下内容,这给了我所需的正常运行时间阈值:
up ([9-9]\d|\d{3,} days,)但我也需要IP地址来理解它,但还没有想出一种方法来获得与高正常运行时间的服务器相关的IP。
我已经找到了类似这样的东西来查找IP地址:
((?: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]?)))因此,我希望返回如下内容:
up 720 days,
10.1.1.1发布于 2019-06-11 06:09:01
您可以实际使用awk
awk -F"\n" -v RS="" '$0 ~ /up (9[0-9]|[0-9]{3,}) days/{gsub(/Connection to | closed\./, "", $NF); print $1 "\n" $NF}' file > newfile请参阅online demo
文件是逐段阅读的,字段之间用换行符分隔。如果记录与up (9[0-9]|[0-9]{3,}) days模式匹配(up带空格,然后9后跟任意数字或任意3位数字后跟空格和days ),则从静态文本中剥离最后一个字段($NF),并打印第一个和最后一个文件。
https://stackoverflow.com/questions/56534010
复制相似问题