我目前从iperf3获得此输出
2016-03-03 21:33:50 [ 4] 0.00-1.00 sec 113 MBytes 950 Mbits/sec
2016-03-03 21:33:50 [ 4] 1.00-2.00 sec 112 MBytes 941 Mbits/sec 0
2016-03-03 21:33:50 [ 4] 2.00-3.00 sec 113 MBytes 944 Mbits/sec 0
Run Code Online (Sandbox Code Playgroud)
我想从这个数据创建图形,并且因为iperf3不能逐行更新时间戳(据我所知..)我正在寻找一种逐行递增输出文件的方法.
结果应该是这样的:
2016-03-03 21:33:50 [ 4] 0.00-1.00 sec 113 MBytes 950 Mbits/sec
2016-03-03 21:33:51 [ 4] 1.00-2.00 sec 112 MBytes 941 Mbits/sec 0
2016-03-03 21:33:52 [ 4] 2.00-3.00 sec 113 MBytes 944 Mbits/sec 0
Run Code Online (Sandbox Code Playgroud)
因此必须在包含Mbits/sec的每一行上执行动作(+1),直到文件结束.
我猜sed和/或date命令可能会有用,循环可能很有用,但无法看到如何使用时间值构建它.
您可以使用sed来做到这一点,但这并不简单......使用perl来做到这一点要容易得多:
perl -lne 'print $1.($2 + ($.) - 1).$3 if /(.+)(50)(.+)/' file.txt
Run Code Online (Sandbox Code Playgroud)
-l启用行结束处理,指定行结束符-n假设循环程序-e一行程序print打印命令.字符串连接$number变量包含与捕获组匹配的字符串部分()$. 当前记录数($2 + ($.) - 1)意思是: 50 + '当前记录数' - 1if /(.+)(50)(.+)/'带有引用的正则表达式的语句printfile.txt包含您的数据的文件| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |