Вы не предоставили правильный ввод, поэтому я использовал следующее:
John,Doe,barry@mail.com
Andy,Barry,barry@mail.com
Mary,,mary@yahoo.com
Для которого следующий однострочник awk дает ожидаемые результаты:
awk -F, '{l[NR]=$0;f[NR]=$3;c[$3]++}END{for(i=1;i<=NR;i++)print l[i] "," c[f[i]]}'
Проблема здесь в том, что ваша задача требует либо двух проходов. (f[] - это просто удобство, чтобы не держать все содержимое разобранным или повторно разбирать его в конце). Но поскольку я не понимаю, почему вы исключили python или perl (они являются базовыми инструментами оболочки), возможно, вы также не считаете awk честной игрой...
Драйвер непросто найти на сайте производителя, но принтер хотя бы один раз поддерживался. Документация по-прежнему доступна для загрузки на их веб-сайте . Я нашел и сам драйвер, но на другом сайте . Если вы не настолько смелы, чтобы попробовать это из неофициального источника, вы можете связаться с самой компанией и попросить об этом. Иногда у них все еще есть водитель, он только заблудился с годами, и никто никогда не спрашивал. Документация есть, так что драйвер, скорее всего, тоже будет там.
Да, если вы используете принтер через cups, вы просто говорите клиентам mswindows, что это ipp-принтер, и устанавливаете url на http://yourPiHostname:631/printers/printername (где yourPiHostname и printername - значения, которые вы настроили. Ваша проблема заключается в том, чтобы написать ppd с нуля, который использует нулевой фильтр для всех mimetypes. Это описано здесь.
В качестве альтернативы, вы можете удалить cups и использовать lpd printing. Опять же, он использует фильтры, но с ними гораздо сложнее работать, чем с файлами ppd. См. LPRng.