파일에서 단어 수를 계산하고 파일의 모든 단어를 연관 배열의 키로 사용하려고합니다. 값은 단어의 출현이어야합니다. Bash는 연관 배열에서 스타 문자를 단어로 처리합니다.
while read line; do
((occs["$line"]=${occs[$line]}+1))
done < $predfile
이제 문제가 파일에서 * (별표)하고 나는 단어로이 별을 처리 할 수 있다는 것입니다. 내가
for i in "${!occs[@]}"
do
echo "$i : ${occs[$i]}" >> $resultfile
done
로 출력 단어의 발행 수를 원하는 경우에는 다음 출력 $ 할려고을 비난 {occs [*]}는 별을 도달하고 내가 할 때 "occs [*] : 잘못된 배열 첨자". 이 문을 처리하기 위해 if 문을 사용할 수는 있지만 이스케이프 된 키를 사용하여 배열 키를 채울 수 있는지 알고 싶습니다.
당신은 위의 문제를 보여줍니다 작은 샘플 입력을 추가시겠습니까? 'declare -A occs; i = "*"; occs [$ i] = 100; echo "$ i : $ {occs [$ i]}" "는 예상대로 작동합니다. 따라서 문제는 다른 곳에서 발생해야합니다. 결합 배열을 선언 했습니까? – Rubens
예 선언을 -A로 선언했습니다. 위 코드를 사용하여 위의 $ predfile에 다음과 같은 내용으로 파일을 만들 수 있습니다 : somethingthing * (줄 바꿈으로 분리 된 *를 포함한 모든 단어) – nico1510
문제는'*' '((...))'표현식 안에있는 index와 같다. 이 문제를 해결할 수있는 방법이 있을지 모르지만, 나는 당신이하려고하는 것은 무엇이든 'bash'가 잘못된 언어라는 표시로 받아 들일 것입니다. – chepner