1

在这种情况下,我想打印第一列主机 IP 和%字符后的所有内容。

10.162.254.12 3558:003557:2013 年 3 月 4 日 12:13:28:%LINEPROTO-SP-5-UPDOWN:接口 GigabitEthernet8/37 上的线路协议,将状态更改为向上
192.50.0.14:2013 年 3 月 4 日 13:14:20 EST : %ETHPORT-5-IF_DOWN_LINK_FAILURE: 接口 Ethernet17/33 已关闭(链接失败)

4

2 回答 2

2

您有两个%字符并且没​​有指定是否应该打印第一个或最后一个之后的所有内容?这是两种使用方式sed

# First field and everything after first %
$ sed 's/ [^%]*%/ /' file
10.162.254.12 LINEPROTO-SP-5-UPDOWN: Line protocol on Interface GigabitEthernet8/37, changed state to up 192.50.0.14 : 2013 Mar 4 13:14:20 EST: %ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet17/33 is down (Link failure)

# First field and everything after last % 
$ sed 's/ .*%/ /' file
10.162.254.12 ETHPORT-5-IF_DOWN_LINK_FAILURE: Interface Ethernet17/33 is down (Link failure)
于 2013-03-04T21:29:41.930 回答
0
sed 's/\([^ ]*\)[^%]*%/\1 /' input
于 2013-03-04T21:30:53.723 回答