Вы читаете все байты и подсчитываете, сколько раз встречается байт 10 (\n
). Его n -е появление непосредственно предшествует n +1-й строке.
К сожалению, это не уловка, а просто единственно возможный подход.
Существуют файловые системы, ориентированные на запись -на некоторых платформах, которые могут разрешать прямой поиск по строке (, например, на VMS и z/ OS ), но эти файловые системы не распространены ни на одной из ваших платформ. Unix и POSIX рассматривают файлы как потоки байтов и не предоставляют никакой дополнительной абстракции.
В настоящее время это возможно (и, без сомнения, останется таковым, поскольку Debian 11 заморожен перед выпуском ), если вам нужен только gcc
(, а неg++
). Вам нужно будет добавить бэкпорты Buster и Bullseye в свои источники и соответствующим образом настроить закрепление, например
Package: *
Pin: release n=buster
Pin-Priority: 500
Package: *
Pin: release n=buster-updates
Pin-Priority: 500
Package: *
Pin: release n=buster-backports
Pin-Priority: 110
Package: *
Pin: release n=bullseye
Pin-Priority: 100
Затем вы можете установить gcc-10
, что не потребует обновления ни libc6
, ни libstdc++6
. У apt
проблемы с разрешением зависимостей, но aptitude
справляется отлично, и в моих тестах они содержат (22 обновленных пакета, большинство из которых представляют собой пакеты GCC или binutils ).
g++-10
— это отдельная история; для этого требуется более новый libstdc++6
и обновление, которое по существу включает в себя обновление до тестирования.
Как вы сказали, хотя это приведет к «FrankenDebian», так что вы можете рассмотреть возможность установки тестового Debian schroot
или использования контейнера debian:11
вместо этого.