Sed 打印第一列并在%符号后打印所有内容

Sed 打印第一列并在%符号后打印所有内容,sed,awk,Sed,Awk,我想打印本例中的第一列主机IP和%字符后的所有内容 10.162.254.12 3558:003557:2013年3月4日12:13:28:%LINEPROTO-SP-5-UPDOWN:接口上的线路协议 千兆以太网8/37,已将状态更改为最多 192.50.0.14:2013年3月4日13:14:20美国东部时间:%ETHPORT-5-如果链路故障:Ethernet17/33接口断开(链路 (失败) 您有两个%字符,但没有指定是打印第一个字符还是最后一个字符之后的所有内容?以下是使用sed的两种

我想打印本例中的第一列主机IP和
%
字符后的所有内容

10.162.254.12 3558:003557:2013年3月4日12:13:28:%LINEPROTO-SP-5-UPDOWN:接口上的线路协议 千兆以太网8/37,已将状态更改为最多
192.50.0.14:2013年3月4日13:14:20美国东部时间:%ETHPORT-5-如果链路故障:Ethernet17/33接口断开(链路 (失败)


您有两个
%
字符,但没有指定是打印第一个字符还是最后一个字符之后的所有内容?以下是使用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)
sed 's/\([^ ]*\)[^%]*%/\1 /' input