Подкладка Perl one -. Его можно было бы назвать гольфом немного короче, но я думаю, что это довольно ясно.
perl -F'\t' -lane '
if (($id, $name) = / \b gene_id \s+ " ([^"]+).+ \b gene_name \s+ " ([^"]+)/x) {
print join "\t", @F[0..7], $id, $name;
}
' file
Еще немного "умнее":
perl -F'\t' -E '$,="\t"; say @F[0..7], $g{id}, $g{name} if %g = /\bgene_(id|name)\s+"([^"]+)/g' file
Я создал ловушку, которая делает то же самое, что и вы, и хотя сначала она работала, после обновления ядра я начал получать то же сообщение об ошибке.
Я думаю, что причиной может быть изменение zram
алгоритма сжатия по умолчанию. Я считаю, что более новые версии ядра начали использовать zstd
в качестве нового значения по умолчанию.
Мне помогло добавление модуля zstd
в функцию build()
хука с помощью add_module zstd
.
И, конечно же, если вместо zstd
вы планируете использовать что-то другое, добавьте этот модуль.
Сообщение об ошибке вводит в заблуждение, но я смог выяснить, чего не хватает, на основе этого