![4개 숫자의 평균을 구합니다 awk 스크립트](https://linux55.com/image/181852/4%EA%B0%9C%20%EC%88%AB%EC%9E%90%EC%9D%98%20%ED%8F%89%EA%B7%A0%EC%9D%84%20%EA%B5%AC%ED%95%A9%EB%8B%88%EB%8B%A4%20awk%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
입력한 4개의 숫자를 추가하는 스크립트를 만들었습니다. 예:
./myawkaverage 8 7 9 4
28
이 4개의 숫자를 추가하고 결과가 다음과 같도록 평균을 표시하려면 스크립트가 필요합니다.
예:
./myawkaverage 8 7 9 4
The average is 7
음수를 허용하는 스크립트도 필요합니다.
지금까지 내 스크립트는 다음과 같습니다.
#!/bin/bash
echo $1 $2 $3 $4 | awk '
{
print sum3($1, $2, $3, $4)
}
function sum3(a, b, c, d) {
return (a + b + c + d)
}'
답변1
오류를 확인하고 사용자 정의 awk
함수를 사용하지 않고도 다음과 같이 스크립트를 단순화할 수 있습니다.
#!/bin/bash
echo $1 $2 $3 $4 | awk '{sum=0; for(i=1; i<=NF; i++) sum += $i; print sum}'
또는 항상 숫자를 출력할 필요가 없는 경우(0이더라도):
#!/bin/bash
echo $1 $2 $3 $4 | awk '{for(i=1; i<=NF; i++) sum += $i; print sum}'
답변2
합계 함수 이름 지정4숫자의 합삼"스크립트 이름을 지정하는 것과 같은 흥미로운 선택입니다.합집합번호 "myawk평균":-). 그래도...:
$ cat myawkaverage
#!/usr/bin/env bash
printf '%s\n' "$@" | awk '{sum+=$0} END{print sum}'
$ ./myawkaverage 8 7 9 4
28
$ ./myawkaverage 1 2 3 4 5 6 7 8 9 10 11
66
실제로 평균을 얻기 위해 스크립트를 작성하려는 경우 다음을 수행하십시오.
$ cat ./myawkaverage
#!/usr/bin/env bash
printf '%s\n' "$@" |
awk -v n="$#" '{sum+=$0} END{ave=(n ? sum / n : "NaN"); print sum, ave}'
$ ./myawkaverage 8 7 9 4
28 7
$ ./myawkaverage 1 2 3 4 5 6 7 8 9 10 11
66 6
$ ./myawkaverage 0
0 0
$ ./myawkaverage
0 NaN