다음과 같은 열이 있습니다 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}'