perl -pale '$_ = join ".", reverse ++$h{$F[0]}, scalar keys %h'
Хэш % h
содержит keyA => count
и скалярные ключи.% H
возвращает количество ключей в любой момент во время. Затем переворачиваем результат и соединяем их запятой.
1.1
1.2
1.3
1.4
2.1
2.2
2.3
3.1
3.2
3.3
3.4
В Linux хорошо то, что у вас есть доступ к исходным текстам, поэтому почти всегда можно что-то изменить, чтобы сделать то, что вы хотите сделай, если приложишь усилия.
В этом случае нетрудно загрузить исходники и просмотреть их, чтобы увидеть, очевидно ли, что нужно изменить. Затем просто перестройте свой собственный двоичный файл pv
. Если вы используете систему на основе rpm
, попробуйте следующее (как обычный пользователь):
$ yumdownloader --source pv
(Это должно работать, даже если у вас dnf вместо yum). У вас должен получиться файл с суффиксом .src.rpm
. Остальная часть названия будет отличаться в зависимости от вашего выпуска. Установите и скомпилируйте его:
$ rpm -i pv-1.6.0-1.fc22.src.rpm
$ rpmbuild -bc ~/rpmbuild/SPECS/pv.spec
Вам не нужно быть пользователем root для установки исходников, поскольку они помещены в ~ / rpmbuild
. Однако вам может потребоваться установить rpmbuild
и другие пакеты для выполнения компиляции. Вы должны получить нормальный финальный двоичный pv в:
$ file ~/rpmbuild/BUILD/pv-1.6.0/pv
Grep через источники, например, MiB, чтобы найти вероятное изменение. Я нашел ~ / rpmbuild / BUILD / pv-1.6.0 / src / pv / display.c
имеет подпрограмму pv__si_prefix ()
, которая принимает параметр is_bytes
, который определяет, следует ли делить на 1000 или 1024. Я просто отредактировал эту процедуру, чтобы установить значение 0, добавив
is_bytes = 0;
сразу после объявлений (перед if (is_bytes) {
). Затем выполните make
, чтобы перекомпилировать двоичный файл следующим образом:
$ cd ~/rpmbuild/BUILD/pv-1.6.0/
$ make
Новый файл pv
должен делать то, что вы хотите.
В системе упаковки deb
вам необходимо выполнить аналогичные шаги:
$ sudo apt-get install dpkg-dev debhelper
$ apt-get source pv
$ cd pv-1.6.0/
$ dpkg-buildpackage -b -nc
... edit src/pv/display.c
$ make