找到匹配后添加新行

the*_*lat 3 bash awk sed

我想在文件中搜索数字64后添加一个新行.我喜欢使用awk或sed来做这件事.

64 bytes from 170.198.42.128: icmp_seq=1 ttl=60 time=83.4 ms 64 bytes from
170.198.42.128: icmp_seq=2 ttl=60 time=76.6 ms 64 bytes from 170.198.42.128: icmp_seq=3  
ttl=60 time=70.8 ms 64 bytes from 170.198.42.128: icmp_seq=4 ttl=60 time=76.6 ms --- 
170.198.42.128 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 
3000ms rtt min/avg/max/mdev = 70.861/76.924/83.493/4.473 ms
Run Code Online (Sandbox Code Playgroud)

我用这个命令

cat file | sed 's/64/\n/g'
Run Code Online (Sandbox Code Playgroud)

但这取代了数字64.我只想打破模式并正确显示以64开头的ping命令模式

我尝试使用追加和插入模式..但没有正确使用它们

需要帮忙

Bar*_*mar 6

在替换&中,替换将被替换为匹配的任何内容.所以:

sed 's/64/\n&/g' file
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 6

sed命令应该适用于 gnu 和 BSD sed 版本:

sed $'s/64/\\\n&/g' file

64 bytes from 170.198.42.128: icmp_seq=1 ttl=60 time=83.4 ms
64 bytes from
170.198.42.128: icmp_seq=2 ttl=60 time=76.6 ms
64 bytes from 170.198.42.128: icmp_seq=3
ttl=60 time=70.8 ms
64 bytes from 170.198.42.128: icmp_seq=4 ttl=60 time=76.6 ms ---
170.198.42.128 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time
3000ms rtt min/avg/max/mdev = 70.861/76.924/83.493/4.473 ms
Run Code Online (Sandbox Code Playgroud)

更新:这是执行相同操作的 gnu awk 命令:

awk '1' RS='64' ORS='\n64' file
Run Code Online (Sandbox Code Playgroud)