Eu acho que o que você quer é
$ awk -F, 'BEGIN{ORS=",";printf "food: "}
/cherries/{print $(NF-1); matches++;};
END{printf "\ncherries appeared "matches "/" NR " times\n"}' file
food: berries,guacamole,
cherries appeared 2/7 times
Note que o seu arquivo tem espaço duplo, então o número de linhas inclui as linhas em branco. Para evitar isso, use
$ awk -F, 'BEGIN{ORS=",";printf "food: "}
/./{k++}
/cherries/{print $(NF-1); matches++;};
END{printf "\ncherries appeared matches /" k " times\n"}' file
food: berries,guacamole,
cherries appeared matches /4 times
-F "," é equivalente a FS="," . ORS é o separador de registro de saída que também é definido como , para facilitar a impressão. A desvantagem é que ele adiciona um , extra no final da linha food: , mas você pode removê-lo passando por | sed 's/,$//' . Seu principal problema foi que a impressão do awk imprime tudo o que você der, seguido pelo valor de ORS , que é uma nova linha por padrão.
Eu não entendo o que você quer dizer com cherries sendo o penúltimo campo, já que esse nunca é o caso em seu exemplo.