더 낮은 값으로 중복 키를 제거하는 데 문제가 있습니다.
나는 while 루프를 사용하여 while read key value
.
원본 텍스트 파일은 다음과 같습니다.
meson 6
electron 5
meson 12
neutron 10
proton 5
hadron 7
neutron 10
proton 2
proton 8
이것은 쉘에서 연관 배열을 사용하여 지금까지 내 출력입니다.
electron 5
hadron 7
meson 18
meson 6
neutron 10
neutron 20
proton 15
proton 5
proton 7
동일한 키의 값을 합산했지만 값이 낮은 키를 제거하고 싶습니다.
내 원하는 출력은 다음과 같습니다.
electron 5
hadron 7
meson 18
neutron 20
proton 15
더 높은 값만 반환 한 다음 스크립트를 끝내는 방법이 sort
있습니까?
Bash 버전 4 사용- sh
연관 배열이 없습니다.
declare -A sum
while read key value; do ((sum[$key] += value)); done <file
for key in "${!sum[@]}"; do echo $key ${sum[$key]}; done
proton 15
neutron 20
hadron 7
electron 5
meson 18
연관 배열 키에는 자연스러운 순서가 없습니다. for 루프를 sort
또는 sort -k2n
원하는 경우 파이프 할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다