从输出文件中读取信息

时间:2017-07-21 17:24:45

标签: linux bash

我试图编写一个Bash脚本来从程序输出中读取数据。输出格式如下:

Net latency average = 55.3649
minimum = 8
maximum = 577
Packet latency average = 56.3409
minimum = 9
maximum = 567

在输出文件中多次使用单词average,minimum和maximum,因此值必须是与" Packet latency"相关联的值。我想将值存储在变量中,以便对它们进行一些操作并将它们写回文件。

我尝试使用sed和awk,但这是一项艰巨的任务。

2 个答案:

答案 0 :(得分:2)

使用sed:

$ packetLatencyMin=$(sed -n '/Packet latency/,/^[A-Z]/{s/minimum = \(.*\)/\1/p}' file)
$ packetLatencyMax=$(sed -n '/Packet latency/,/^[A-Z]/{s/maximum = \(.*\)/\1/p}' file)
$ echo $packetLatencyMin
9
$ echo $packetLatencyMax
567

答案 1 :(得分:1)

用ex:

$ cat input.txt 
Net latency average = 55.3649
minimum = 8
maximum = 577
Packet latency average = 56.3409
minimum = 9
maximum = 567
$ cat latency.sh
#!/bin/bash

ex input.txt << EOM
/Packet latency average
normal kdgg4dwj2dwj2dwA
wq
EOM
$ ./latency.sh
$ cat input.txt
56.3409
9
567

ex脚本允许您使用类似于VIM的命令修改文件,因此如果您已经了解VIM,它们非常有用。