Приведенное ниже значение awk
даст tab-delimeted file1
с разницей между $3-$2
, рассчитанной для каждой строки и напечатанной в $6
.Перед выполнением awk
существует только 5 полей.
Какие у меня проблемы с обновлением каждого значения $2
в file2
со значением $7
file1
, если значение $1
file2
соответствует $5
file1
, а $6
в file1
не intron
.Если значение $5
равно intron
, то значение $7
в file1
равно нулю.Так, например, строка 1 в file1
равна intron
, так что эквивалентна нулю или пропущена (эти строки не нужны в расчете).
Возможно, значение $1
в file2
может не существовать в file1
, и в этом случае значение $2
в file2
равно нулю.Строка 3 в file2
является примером и установлена в ноль, потому что она не существует в file1
.Спасибо:).
Awk с выводом
awk '
FNR==NR{ # process same line
b[$4]=$3-$2;
next # process next line
}
{
a[$5]+=($3-$2)
}
{
split($1, b, " "); print b[0], a[b[0]]
}' OFS="\t" file1 file2
Вывод
-2135
-2135
-2222
-2351
-2351
-2414
File1 tab-delimited
chr5 86667863 86667879 RASA1 intron 16
chr5 86669977 86669995 RASA1 splicing 18
chr5 86670703 86670805 RASA1 exon 102
chr5 86679453 86679547 RASA1 intron 94
chr5 86679571 86679673 RASA1 exon 102
chr19 15088950 15088961 NOTCH2 intron 50
chr19 15288950 15288961 NOTCH3 intron 11
chr19 15308240 15308275 NOTCH3 exon 35
Файл2 space delimited
RASA1 2135
NOTCH2 0
GIMAP8 87
NOTCH3 129
FOXF2 0
PRB3 63
Желаемый after file2 is updated
RASA1 222 `(102+102+18)`
NOTCH2 0
GIMAP8 0
NOTCH3 35 `(35)`
FOXF2 0
PRB3 0
Возможно добавление |
после первого awk
с помощью:
awk 'FNR==NR { a[$1]=$7; next } { if(a[$5]){$1=a[$5] }; print }'
Для обновления file2