Jas*_*son 0 shell-script text-processing ping
如何过滤掉特定毫秒以下的任何 ping,即,仅将 500 毫秒以上的 ping 响应回显到文本文件?
IP=$1
SECONDS_Between_Pings=$2
ping -i $2 $1 | while read pong; do echo $(date) $pong; done >> ~/Downloads/pings_file_$(date +%Y-%m-%d).txt
Run Code Online (Sandbox Code Playgroud)
grep
使用扩展正则表达式:
ping ... | grep --line-buffered -E 'time=([0-9]{4}|[5-9][0-9]{2})' | ...
Run Code Online (Sandbox Code Playgroud)
这将匹配任何行,time=
紧跟其后的是:
--line-buffered
解决了在管道链中使用时由grep
默认输出缓冲引起的问题。当 grep 是链中的最后一个链接时不需要。