Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 文件中每分钟的平均awk计数_Regex_Bash_Awk_Sed_Mean - Fatal编程技术网

Regex 文件中每分钟的平均awk计数

Regex 文件中每分钟的平均awk计数,regex,bash,awk,sed,mean,Regex,Bash,Awk,Sed,Mean,假设我有这样一个文件: 2013年3月13日12:13:01 | STRING1 | NUMBER1 | 1 | NUMBER3 2013年3月13日12:13:08 | STRING1 | NUMBER1 | 12 | NUMBER3 2013年3月13日12:13:09 | STRING3 | NUMBER1 | 13 | NUMBER3 2013年3月13日12:13:12 | STRING2 | NUMBER1 | 21 | NUMBER3 2013年3月13日12:13:15 | ST

假设我有这样一个文件:

2013年3月13日12:13:01 | STRING1 | NUMBER1 | 1 | NUMBER3
2013年3月13日12:13:08 | STRING1 | NUMBER1 | 12 | NUMBER3
2013年3月13日12:13:09 | STRING3 | NUMBER1 | 13 | NUMBER3
2013年3月13日12:13:12 | STRING2 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:13:15 | STRING2 | NUMBER1 | 11 | NUMBER3
2013年3月13日12:13:18 | STRING1 | NUMBER1 | 13 | NUMBER3
2013年3月13日12:13:20 | STRING2 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:13:25 | STRING3 | NUMBER1 | 51 | NUMBER3
2013年3月13日12:13:38 | STRING2 | NUMBER1 | 71 | NUMBER3
2013年3月13日12:13:40 | STRING1 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:13:42 | STRING1 | NUMBER1 | 11 | NUMBER3
2013年3月13日12:13:55 | STRING3 | NUMBER1 | 71 | NUMBER3
2013年3月13日12:14:02 | STRING1 | NUMBER1 | 11 | NUMBER3
2013年3月13日12:14:07 | STRING1 | NUMBER1 | 13 | NUMBER3
2013年3月13日12:14:08 | STRING3 | NUMBER1 | 13 | NUMBER3
2013年3月13日12:14:15 | STRING2 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:14:16 | STRING2 | NUMBER1 | 11 | NUMBER3
2013年3月13日12:14:16 | STRING1 | NUMBER1 | 1 | NUMBER3
2013年3月13日12:14:20 | STRING2 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:14:25 | STRING3 | NUMBER1 | 51 | NUMBER3
2013年3月13日12:14:37 | STRING2 | NUMBER1 | 71 | NUMBER3
2013年3月13日12:14:42 | STRING1 | NUMBER1 | 1 | NUMBER3
2013年3月13日12:14:45 | STRING1 | NUMBER1 | 11 | NUMBER3
2013年3月13日12:14:58 | STRING3 | NUMBER1 | 51 | NUMBER3
2013年3月13日12:15:06 | STRING2 | NUMBER1 | 11 | NUMBER3
2013年3月13日12:15:13 | STRING1 | NUMBER1 | 43 | NUMBER3
2013年3月13日12:15:22 | STRING2 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:15:26 | STRING3 | NUMBER1 | 51 | NUMBER3
2013年3月13日12:15:35 | STRING2 | NUMBER1 | 71 | NUMBER3
2013年3月13日12:15:40 | STRING1 | NUMBER1 | 1 | NUMBER3
2013年3月13日12:15:42 | STRING1 | NUMBER1 | 21 | NUMBER3
2013年3月13日12:15:53 | STRING3 | NUMBER1 | 71 | NUMBER3

我想找出第4列(第三个
|
之后)每分钟变量
X
的平均值。例如,如果
$X=“STRING1”
结果应该是:

2013年3月13日12:13 | STRING1 | 11.6
2013年3月13日12:14 | STRING1 | 7.4
2013年3月13日12:15 | STRING1 | 21.666


所以,我们用变量
$X
查找每一分钟的行,并计算这些行的平均值。如何处理它?

您可以使用以下awk程序:

示例.awk:

执行它:

awk -F'|' -v SEARCH=STRING1 -f example.awk your.log
输出:

13.03.2013 12:13 | STRING1 | 11.6
2013年3月13日12:14 | STRING1 | 7.4
2013年3月13日12:15 | STRING1 | 21.6667

您可以使用以下awk程序:

示例.awk:

执行它:

awk -F'|' -v SEARCH=STRING1 -f example.awk your.log
输出:

13.03.2013 12:13 | STRING1 | 11.6
2013年3月13日12:14 | STRING1 | 7.4
2013年3月13日12:15 | STRING1 | 21.6667

不,我正在编写脚本来分析来自一个应用程序的日志。这是其中一个步骤。。我被困在这里了。不,我正在写脚本来分析一个应用程序的日志。这是其中一个步骤。。我卡在这里了。输出的顺序没有保证。可能需要在时间列上排序顺序在我的解决方案中并不重要,但对OPS可能很重要您是指输出中的行顺序?输入中的行可能是按时间排序的,因为它是一个日志文件。这样,输出也将被排序(不需要任何努力)。我遗漏了什么吗?你遗漏了:在结束块中,你正在迭代关联数组的索引。在这个循环中没有固有的顺序。你不是:我忽略了你的数组索引是整数这一事实。没关系。输出的顺序不保证。可能需要在时间列上排序顺序在我的解决方案中并不重要,但对OPS可能很重要您是指输出中的行顺序?输入中的行可能是按时间排序的,因为它是一个日志文件。这样,输出也将被排序(不需要任何努力)。我遗漏了什么吗?你遗漏了:在结束块中,你正在迭代关联数组的索引。在这个循环中没有固有的顺序。你不是:我忽略了你的数组索引是整数这一事实。没有关系。
awk -v X="STRING1" '
    BEGIN { FS = OFS = "|" }
    $2 != X {next} 
    {min = substr($1,1,16)} 
    min != prev {
        if (NR>1) print prev, X, total/n
        total = n = 0
        prev = min
    } 
    {n++; total += $4} 
    END {print prev, X, total/n}
' file