как увеличить количество массивов в bash? - PullRequest
0 голосов
/ 01 марта 2020

Код awk ниже подсчитывает частоту появления $ 1. Я хотел бы получить bash эквивалент для этого кода?

a[$1]++}END{for(x in a)print a[x],x

Как бы я сделал это с массивом bash?

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Хотя будут bash -ориентированные и более умные способы, буквальный перевод вашего кода будет:

declare -A a                    # you need to explicitly declare an associative array

while read -r x rest; do        # "x" is assigned to the first field ($1) and "rest" to the rest
    ((a[$x]++))                 # increment the count
done

for x in "${!a[@]}"; do         # iterate over the array
    echo "${a[$x]},$x"          # print the result
done

Приведенный выше код ожидает ввода через stdin, и вам нужно передать ввод с помощью перенаправления или канала.

0 голосов
/ 01 марта 2020

Для подсчета количества вхождений elem в arr:

printf '%s\n' "${arr[@]}" | grep -cw elem
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...