我试图编写一个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,但这是一项艰巨的任务。
答案 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,它们非常有用。