Прежде всего... вам нужно следовать инструкциям OpenVAS на их сайте:
For installation from source code, it is recommended and assumed that you are familiar with the procedure to build and install software starting with the actual source code.
Если вы не знакомы с компиляцией из исходников, то вам нужно сначала изучить ее, прежде чем пытаться скомпилировать OpenVas...
Теперь, когда это было сказано...
Обычный рабочий процесс компиляции состоит в том, чтобы сначала установить библиотеки, затем Сканер, затем Менеджер и, наконец, Помощник по безопасности Greenbone (, поэтому они перечислены именно таким образом)
Из ваших источников:
Библиотеки:
1 )Вам необходимо прочитать файл INSTALL, в котором указано:
Prerequisites for openvas-libraries
...
General build environment:
...
Сканер:
Повторить шаг 1)
Менеджер:
Повторить шаг 1)
Помощник по безопасности Greenbone
Повторить шаг 1)
Все есть в источниках, нужно только их прочитать.
Мы можем сделать это следующим образом, используя утилиты Perl и sed:
perl -F'\t' -pale '$"="\t";
/(?:^|:)(?=[1-9])/g, push(@F, qw[A T C G N del][+pos>>1]) for @F[3,4];
$_="@F";
' file.tsv
NW_006532398.1 302035 C 0:0:32:0:0:0 42:0:0:0:0:0 KCND2 intergenic_region C A
NW_006532398.1 302035 C 0:0:0:0:0:2 42:0:0:0:0:0 KCND2 intergenic_region del A
NW_006532656.1 289636 C 0:0:28:0:0:0 0:28:0:0:0:0 CNTN1 intron_variant C T
NW_006532762.1 6396 C 0:54:0:0:0:0 0:0:53:0:0:0 NA intergenic_region T C
NW_006532762.1 25741 C 0:0:62:0:0:0 0:43:0:0:0:0 NA intergenic_region C T
NW_006532762.1 32304 T 0:60:0:0:0:0 0:0:49:0:0:0 NA intergenic_region T C
NW_006532762.1 179065 G 0:0:0:45:0:0 59:0:0:0:0:0 DOCK4 intron_variant G A
sed -re '
1{x;s/.*/A:T:C:G:N:del/;x;}
s/\t/&\n/3;G;ba
:b;s/\t/&\n/4;G
:a;s/\n0:(.*)\n[^:]+:/0:\n\1\n/;ta
s/\n//;s/\n([^:]+)/\t\1\n/;s/\n.*//;s/^//;tc
:c;s/\t/&/8;t;bb
' file.tsv
Пояснения:
В четвертом $F[3]
и пятом $F[4]
полях текущей записи$_
(ака, строка )мы
определить позицию (в этом поле )первой ненулевой цифры. В силу того
, что 0:
занимают 2 позиции, мы делим найденную позицию пополам, чтобы получить индекс анонимного массива qw[A T C G N del]
для этого поля.
Теперь нужно просто прикрепить найденные A/T/C/G/N или del к массиву @F
.
Затем мы экстраполируем массив @F
с помощью вкладки$"
()и распечатываем его.
Предположения:
@F
. one-hot
, что означает, что всегда обязательно присутствует ровно одно ненулевое число. $ cat tst.awk
BEGIN {
FS=OFS="\t"
split("A:T:C:G:N:del",map,/:/)
}
{ print $0, vals2id($4), vals2id($5) }
function vals2id(vals, arr, i, id) {
split(vals,arr,/:/)
for (i in arr) {
if (arr[i] != 0) {
id = map[i]
}
}
return id
}
$ awk -f tst.awk file
NW_006532398.1 302035 C 0:0:32:0:0:0 42:0:0:0:0:0 KCND2 intergenic_region C A
NW_006532656.1 289636 C 0:0:28:0:0:0 0:28:0:0:0:0 CNTN1 intron_variant C T
NW_006532762.1 6396 C 0:54:0:0:0:0 0:0:53:0:0:0 NA intergenic_region T C
NW_006532762.1 25741 C 0:0:62:0:0:0 0:43:0:0:0:0 NA intergenic_region C T
NW_006532762.1 32304 T 0:60:0:0:0:0 0:0:49:0:0:0 NA intergenic_region T C
NW_006532762.1 179065 G 0:0:0:45:0:0 59:0:0:0:0:0 DOCK4 intron_variant G A
Я считаю, что следующий скрипт sed сделает то, что вам нужно:
s/\t[1-9][0-9]*:0:0:0:0:[^\t]*\t/&A\t/g
s/\t0:[1-9][0-9]*:0:0:0:[^\t]*\t/&T\t/g
s/\t0:0:[1-9][0-9]*:0:0:[^\t]*\t/&C\t/g
s/\t0:0:0:[1-9][0-9]*:0:[^\t]*\t/&G\t/g
s/\t0:0:0:0:[1-9][0-9]*:[^\t]*\t/&N\t/g
s/\t0:0:0:0:0:[1-9][0-9]*\t/&del\t/g
s/^\t(([^\t]*\t){4})([^\t]*)\t([^\t]*)(\t[^\t]*)(\t.*)/\1\4\6\t\3\5/
Выполнить с помощью:
sed -rf script.sed file.tsv > output.tsv