эквивалент sort -z в Solaris (поддерживает многострочную сортировку)

Да, это возможно. Просто создайте новый профиль (на основеlxc-container-default-cgns)и используйте его для определенных контейнеров. Итак, первый запуск

cp -i /etc/apparmor.d/lxc/lxc-default-cgns /etc/apparmor.d/lxc/lxc-default-with-nfs

Затем отредактируйте новый файл/etc/apparmor.d/lxc/lxc-default-with-nfs:

  • заменить profile lxc-container-default-cgnsнаprofile lxc-container-default-with-nfs
  • укажите конфигурацию NFS (см. ниже )непосредственно перед закрывающей скобкой(})

Конфигурация NFS

Либо напишите

  mount fstype=nfs*,
  mount fstype=rpc_pipefs,

или (более явно)

  mount fstype=nfs,
  mount fstype=nfs4,
  mount fstype=nfsd,
  mount fstype=rpc_pipefs,

и, наконец, запустите systemctl reload apparmor.

Использовать новый профиль

Отредактируйте /etc/pve/lxc/${container_id}.confи добавьте эту строку:

lxc.apparmor.profile: lxc-container-default-with-nfs

Затем остановите контейнер и запустите его снова, т.е. вот так:

pct stop ${container_id} && pct start ${container_id}

Теперь подключение общих ресурсов NFS должно работать.

1
24.05.2020, 22:51
2 ответа

Сperl:

perl -0777 -ne 'print sort /^\d.*\n(?:\D.*\n)*/gm' your-file

Это загружает весь файл в память (режим slurp с -0777 -p), извлекает блоки на основе этого регулярного выражения (строка, начинающаяся(^)с цифры (\d), следующей за 0 или более(*)строками, начинающимися с не -цифрой(\D))и printс ними после sorting.

1
18.03.2021, 23:33

Чтобы отсортировать записи, разделенные нулями -, если есть символ, который гарантированно не появится в ваших данных, вы можете использовать tr, чтобы заменить его нулевыми байтами. Однако это не поможет вам напрямую, поскольку ваши данные разделены символами новой строки, и даже сортировка GNU не имеет возможности обрабатывать только определенные символы новой строки в качестве разделителей. Вам нужно перевести последовательности табуляции новой строки -во что-то, что не содержит новой строки, затем отсортировать, а затем отменить исходный перевод.

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

awk '/^\t/ {line = line $0; next}
     {print line; line = $0}
     END {print line}' |
sort |
awk '{gsub(/\t/, "\n\t"); print}'
0
18.03.2021, 23:33

Теги

Похожие вопросы