首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >notepad++或sed中的正则表达式,以返回两个不同的字符串

notepad++或sed中的正则表达式,以返回两个不同的字符串
EN

Stack Overflow用户
提问于 2019-06-11 05:54:57
回答 1查看 42关注 0票数 1

我有一份报告,其中包含有关服务器列表的信息。我想要搜索此列表的正常运行时间超过一定数量,以及服务器的IP。我一直在使用notepad++进行搜索,但是sed语法也可以。报告中的数据如下:

代码语言:javascript
复制
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.

到目前为止,我已经提出了以下内容,这给了我所需的正常运行时间阈值:

代码语言:javascript
复制
up ([9-9]\d|\d{3,} days,)

但我也需要IP地址来理解它,但还没有想出一种方法来获得与高正常运行时间的服务器相关的IP。

我已经找到了类似这样的东西来查找IP地址:

代码语言:javascript
复制
((?: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]?)))

因此,我希望返回如下内容:

代码语言:javascript
复制
up 720 days,
10.1.1.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 06:09:01

您可以实际使用awk

代码语言:javascript
复制
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),并打印第一个和最后一个文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56534010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档