извлечение части строки из определенного столбца

Нет, нет, нет, нет, нет!

SELinux здесь не просто так. Ваши приложения никогда не должны иметь метки init_exec_t. Эта метка зарезервирована для systemd или других систем инициализации, которые могут использоваться в системе, как вы можете видеть в политике Fedora (например).

Запуск приложений в этом контексте устанавливает для них особый режим и ожидает, что это приложение будет вести себя как система инициализации (что, конечно же, не так).

Чтобы решить эту проблему, вам нужно поделиться, что это приложение должно делать, как оно запускается и где хранится. Как правило, вы должны иметь возможность установить для исполняемого файла какой-либо разумный контекст выполнения (sbin_exec_t?), а для других — какой-то общий контекст, читаемый для этих файлов (etc_t?).

У меня нет под рукой RHEL/Fedora, чтобы дать более конкретные советы в данный момент, но, конечно, ответ не в том, чтобы установить для всего контекста значение init_exec_t. Это не сработает.

0
07.08.2017, 20:10
3 ответа

Используйте awkс несколькими разделителями.

 awk -F"[\" \t]" '{print $1,$11,$14,$20,$40}' infile.txt 
2
28.01.2020, 02:16

awkиспользует пробел в качестве разделителя.

Попробуйте это:

$ awk '{print $1, $4, $5, $7, substr($16, 2, 7) }' file
chr1 11869 12227 + DDX11L1
chr1 12010 12057 + DDX11L1
0
28.01.2020, 02:16

Если у вас есть GNU awk, вы можете использовать gensubдля замены с помощью подходящего регулярного выражения, например. предполагая, что все из gene_idявляется одной вкладкой -поле с разделителями 9:

gawk -F '\t' '{$9 = gensub(/.*gene_name "([^"]*)".*/,"\\1","1",$9); print $1,$4,$5,$7,$9}' input
chr1 11869 12227 + DDX11L1
chr1 12010 12057 + DDX11L1
3
28.01.2020, 02:16

Теги

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