다음을 사용하여 폴더에 포함된 파일의 평균 엔트로피를 계산하려고 합니다.
{ echo '('; find . -type f -exec entropy {} \; | \
grep -Eo '[0-9.]+$' | \
sed -r 's/$/+/g'; echo '0)/';
find . -type f | wc -l; } | \
tr -d '\n' | bc -l
entropy
파일의 Shannon 엔트로피를 계산하여 다음 형식의 출력을 제공하는 실행 파일입니다.
$ entropy foo
foo: 5.13232
위 명령에서 오류가 발생했습니다.
(standard_in) 1: syntax error
그러나 생성된 출력은 괜찮아 보입니다.
$ { echo '('; find . -type f -exec entropy {} \; | \
grep -Eo '[0-9.]+$' | \
sed -r 's/$/+/g'; echo '0)/'; \
find . -type f | wc -l; } | \
tr -d '\n'
(5.13232+2.479+1.4311+0)/3
이것은 또한 작동합니다:
$ echo '(2.1+2.1)/2' | bc -l
2.1
위 명령에 어떤 문제가 있나요?
답변1
이것은 또한 작동합니다:
echo '(2.1+2.1)/2' | bc -l
아, 하지만 시도해 보셨나요:
echo '(2.1+2.1)/2' | tr -d '\n' | bc -l
(standard_in) 1: syntax error
사용하면 echo -n
동일한 작업을 수행할 수 있습니다. 즉, 문제인 개행 문자를 종료하지 않아도 됩니다.
답변2
bc
매우 특별한 구문이 있습니다. dc
너무 까다롭지 않음:
find . -type f -exec entropy \{\} + |
sed 's/.*://;N;N;s/\n[^:]*:/+/g;s/+//;s|$| 3/p|' |
dc
나생각하다이것이 당신이 하고 싶은 일이지만, 완전히 확신할 수는 없습니다. 한 줄보다 큰 샘플 출력이 도움이 될 것입니다.