나는 다음 AWK의 oneliner 있습니다AWK : DICT 값 번호 CONCAT 문자열
내가 무엇이 필요{dict[$2"@"$6]=($(NF-2)/($(NF-2)+$NF))*100 } END {for (a in dict) { printf "%s %d :" , a, int(dict[a]) }}
,
($(NF-2)/($(NF-2)+$NF))*100 " out of" $(NF-2)+$NF
그래서 내가 원하는 각 사전 키 조합의 값에 추가하는 것입니다 awk를 사용하여 모든 수학을 계산 한 다음 문자열을 작성하고 사전 값으로 넣습니다. 나는 이미 공백과 괄호의 조합으로 시도했지만 여전히 운이 없다.
바르는 입력 스트림으로부터 충전된다
$2 - host , not unique in input stream
$3 - partition , not unique in input stream
$NF - space avail
$NF-2 - space used
$(NF-2)+$NF - gives you overall capacity of partiton
출력 예상
80% [email protected]/local/1
출력 :
80% [email protected]/local/1 out of 112G
가 ------------- --------- Solution -----------------------------------
좋은 잡기와 함께, 나는 이것을 해결했다. 문제는 printf 부분에서 int()를 수행 했으므로 출력이 잘리지 않았다는 것입니다. 하지만, 랩 어라운드 (wrap-around) 셸 부분에서 다른 문제가 발생했기 때문에 최종 코드가 다른 질문과 다를 것으로 예상되었습니다. DICT 값이 내 경우에는 문자열이 될 수 없기 때문에
'{key=($2 "@" $6 " out of " int((($(NF-2)+$NF)/1000)/1000) "GB") ; dict[key]=($(NF-2)/($(NF-2)+$NF))*100 } END {for (a in dict) { printf "%s , %d :" , a, int(dict[a]) }}'
는 I`ve 내가 INT와 비교됩니다 학습과, 사전 키에 대한 부분 및 용량 "에서"이동했다.
세부 정보를 추가했으나 내 질문의 범위에서 중요성이 낮습니다. 문제는 수학 + 문자열 + 수학의 결과를 (스팅으로서) 연결하여 사전에 배치하는 방법입니다. 나는 awk가 이것에 문제가 있다고 생각하기 시작한다. –