首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同情况下使用regexp执行sed

在不同情况下使用regexp执行sed
EN

Stack Overflow用户
提问于 2013-02-04 23:51:55
回答 4查看 131关注 0票数 1

我有一个简单的任务:

从这样的输出中:

代码语言:javascript
复制
[root@localhost:~]# racoonctl -s /var/racoon/racoon.sock ss isakmp
Destination            Cookies                           Created
89.208.102.86.500      d0a641ed0aa7bfe9:7ae3428b08fab146 2013-02-04 15:32:18

只需要获取IP地址字符串和日期字符串(在不同的请求中)。

对于IP,我编写了以下regexp:

代码语言:javascript
复制
[root@localhost:~]# racoonctl -s /var/racoon/racoon.sock ss isakmp | sed -ne 's/^\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*/\1/p'
89.208.102.86

但是for date不起作用

代码语言:javascript
复制
[root@localhost:~]# racoonctl -s /var/racoon/racoon.sock ss isakmp | sed -ne 's/^.*\([0-9]\{4\}\(\-[0-9]\{2\}\)\{2\}\  \([0-9]\{2\}:\)\{2\}[0-9]\{2\}\)$/\2/p'
[root@localhost:~]# 

不能理解错误在哪里?

我还想使用标志-r更改/(expression/)和/{expression/},但不知道如何操作

提前谢谢你

另外,我还知道另一种变种:

代码语言:javascript
复制
[root@localhost:~]# racoonctl -s /var/racoon/racoon.sock ss isakmp |awk -F\. '/[0-9]/ {print $1"."$2"."$3"."$4}' 
89.208.102.86

[root@localhost:~]# racoonctl -s /var/racoon/racoon.sock ss isakmp | awk '/[0-9]/ {print $3 " " $4}'
2013-02-04 15:32:18

但我想在sed上做这件事,为我未来的繁重任务做准备。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-05 00:00:57

您可以使用以下sed:

代码语言:javascript
复制
sed -ne 's/^.*\([0-9]\{4\}\(\-[0-9]\{2\}\)\{2\} \)/\1/p'

去找你的约会对象。

票数 1
EN

Stack Overflow用户

发布于 2013-02-05 00:03:35

这样如何:

代码语言:javascript
复制
# IP 
$ sed -rn '2s/\.[0-9]+ .*//p' file
89.208.102.86

# Date and time
$ sed -rn '2s/(\S+\s+){2}//p' file
2013-02-04 15:32:18

# Just date
$ sed -rn '2s/(\S+\s+){2}(\S+).*/\2/p' file
2013-02-04
票数 1
EN

Stack Overflow用户

发布于 2013-02-05 00:07:54

对于像1.2.3.4这样的IP,它是:

代码语言:javascript
复制
sed -n 's%\([0-9.]+\).*%\1%p'
sed -rn 's%([0-9.]+).*%\1%p'

对于日期,它是:

代码语言:javascript
复制
sed -n 's%.*\ \([0-9-]\+\ [0-9:]\+\)%\1%p'
sed -rn 's%.* ([0-9-]+ [0-9:]+)%\1%p'

如果IP总是像1.2.3.4.5 (所以,有第五个字段,显然是端口号),sed命令是:

代码语言:javascript
复制
sed -n 's%\([0-9.]\+\)\.[0-9]\+.*%\1%p'
sed -rn 's%([0-9.]+)\.[0-9]+.*%\1%p'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14690342

复制
相关文章

相似问题

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