gpt4 book ai didi

linux - AWK 计数 - 奇怪的行为

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:12 25 4
gpt4 key购买 nike

我有一个包含以下格式的 csv

字段1、字段2、成功计数、失败计数

我写了一个 awk 脚本来计算字段 2 值的成功计数和失败计数的总和。这个脚本似乎工作正常。但突然间它表现得很奇怪。它甚至在开始计数之前就加了 2。所以结果会比实际多两个。下面是我的脚本。

sed 's/\r//' FileName.csv | grep 'HTTP Requests - POST' | awk -F "," '{failure += $3; success += $4} END {print "HTTP Requests - POST,  Failure : " failure " Success : "success " Total : " success+failure;}'

然后我添加了 success 以在执行时打印。它打印在下面。

2
9
27

sed 's/\r//' FileName.csv | grep 'HTTP Requests - POST' | awk -F "," '{failure += $3; success += $4; print success;} END {print "HTTP Requests - POST,  Failure : " failure " Success : "success " Total : " success+failure;}'

有人能帮忙吗?



CSV 如下所示。

OPERATOR,HTTP_METHOD,SUCCESS_COUNT,FAILURE_COUNT
CELL_01,HTTP Requests - POST,10,19
CELL_03,HTTP Requests - GET,12,17
CELL_04,HTTP Requests - POST,1,15
CELL_05,HTTP Requests - PUT,16,14
CELL_01,HTTP Requests - DELETE,19,13
CELL_03,HTTP Requests - POST,17,12
CELL_05,HTTP Requests - PUT,11,13



sed 用于删除 windows 换行符并用 linux 换行符替换它们。
Grep 仅用于过滤 POST 请求。


根据下面@glenn 的回答,我试过了。查看下面的输出

awk -F "," '/\/GET/ { sub(/\r$/,""); failure += $3; success += $4; print failure; print success; print ""; } END  {print "HTTP Requests - POST,  Failure : " failure " Success : "success " Total : " success+failure}' Sandbox.csv
0
2

0
9

0
27

预期输出HTTP 请求 - POST,失败:0 成功:25 总计:25

最佳答案

使用 awk 时不需要 sed 和 grep:

awk -F "," '
/POST/ {
sub(/\r$/,"")
failure += $3
success += $4
print success
}
END {print "HTTP Requests - POST, Failure : " failure " Success : "success " Total : " success+failure}
' FileName.csv

此外,第 3 列似乎是成功的,而第 4 列是失败的,但您的代码中的变量已反转。这可以解释奇怪的行为吗?

关于linux - AWK 计数 - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com