我对bash脚本非常陌生。 我有一个网络跟踪文件,我想解析。跟踪文件的一部分是(两个包):如何获得grep的每条输出行的长度
[continues...]
+---------+---------------+----------+
05:00:00,727,744 ETHER
|0
|00|03|a0|09|5c|1c|00|10|07|df|a4|20|08|00|45|00|00|38|e7|55|
+---------+---------------+----------+
05:00:00,727,751 ETHER
|0
|00|03|a0|09|5c|1c|00|10|07|df|a4|20|08|00|45|00|00|38|e7|56|00|00|3a|01|
[continues...]
对于每个数据包,我想打印时间戳和数据包的长度(十六进制值即将在下一行之后| 0头)所以输出如下:
05:00:00.727744 20 bytes
05:00:00.727751 24 bytes
我可以用时间标记线和在bash分别用grep包:
times=$(grep '..\:..\:' $fileName)
packets=$(grep '..|..|' $fileName)
但我不能与单独的输出线工作后,那。整个结果连接在两个变量“时间”和“数据包”中。我怎样才能得到每个数据包的长度?
P.S.一个很好的参考,真正解释如何做bash编程,而不仅仅是做例子,将不胜感激。
您是如何创建网络跟踪的?首先直接输出所需的值通常要容易得多,而不是写一些详细的文本,并在稍后尝试解析。 – michas 2015-02-06 17:27:09
@rici,谢谢你的观点。固定 – Shervin 2015-02-06 17:31:30
@michas,我下载了它。并没有自己产生。 – Shervin 2015-02-06 17:32:40