我有一个csv
看起来像这样的,(还有其他列,但这些是相关的)
region, city, actual rating, predicted rating
NSW, SYD, 0.765, 0.5
Victoria, Melbourne, 4.81225, 5.0
我想要做的是输出实际评级不在最近的区域和城市0.5
,即它会输出,NSW, SYD
因为更0.765
接近于。我尝试通过计算舍入来进行变体来做到这一点:1.0
0.5
awk
awk -F, '{$3=$3*2; printf "%0.0f\n",$3}'
但我不确定在编辑特定字段时如何保留其他字段,因此我陷入了这一步
答案1
从您显示的数据推断,预测评分是 0.5 的倍数,因此“实际评分不在最接近的 0.5 范围内”条件相当于“实际评分相差超过 0.5/2”。所以测试一下。标准 awk 没有绝对值函数,因此您需要结合两个测试。
要打印前两个字段,请打印$1
和$2
。设置OFS
为逗号以使它们以逗号分隔;或者你可以使用print $1 "," $2
.
awk -F, -v OFS=, '$4 - $3 < -0.25 || $4 - $3 > 0.25 {print $1, $2}'