У меня есть два отдельных файла, Input_File1 и Input_File2, каждый из которых содержит различное количество столбцов, которые я объединил ( с некоторой помощью ) на основе данных в нескольких столбцах.
Пока что к Input_File1 добавлен столбец для создания нового файла (file3) на основе сопоставления данных в столбцах 1, 2 и 3 в Input_File1 и столбцах 1, 2 и 3 в Input_File2. В целом, это работает хорошо. Однако есть несколько обстоятельств, когда данные в столбцах 1, 2 и 3 в Input_File1 и Input_File2 совпадают, но выходные данные в файле3 должны отличаться. Это основано на другой функции в Input_File1 и Input_File2, наличии «-» или «+».
Input_File1
VMNF01000007.1 6294425 6294650 . . + Focub_B2_mimp_2
VMNF01000008.1 1441418 1441616 . . - Focub_II5_mimp_3
VMNF01000008.1 1441418 1441616 . . - Focub_B2_mimp_1
VMNF01000008.1 1441418 1441616 . . + Focub_B2_mimp_2
Input_File2
VMNF01000007.1 6294425-6294650(+) tacagtggggggcaataagtatgaataccctttggtgtactgacacacacctctt
VMNF01000008.1 1441418-1441616(-) gggagtgtattgttttttctgccgctagcccattttaacatttagagtgtgcata
VMNF01000008.1 1441418-1441616(-) gggagtgtattgttttttctgccgctagcccattttaacatttagagtgtgcata
VMNF01000008.1 1441418-1441616(+) tacagtggggggcaataagtatgaataccctttgatgtactgacacacacctctt
Как видите, данные в двух последних строках Input_File2 одинаковы, кроме (-) и (+), как следствие, следующая последовательность отличается.
Когда создается файл3, последовательности в столбце 8 не отличаются, как в Input_File2. Это связано с тем, что при сопоставлении столбцов учитываются только данные VMNF01000008.1 1441418 1441616
.
текущий файл3 (обратите внимание на последовательности и + или - последние две строки):
VMNF01000007.1 6294425 6294650 . . - Focub_B2_mimp_1 tacagtggggggcaataagtatgaataccctttggtgtactgacacacacctctt
VMNF01000008.1 1441418 1441616 . . - Focub_II5_mimp_3 tacagtggggggcaataagtatgaataccctttgatgtactgacacacacctctt
VMNF01000008.1 1441418 1441616 . . - Focub_B2_mimp_1 tacagtggggggcaataagtatgaataccctttgatgtactgacacacacctctt
VMNF01000008.1 1441418 1441616 . . + Focub_B2_mimp_2 tacagtggggggcaataagtatgaataccctttgatgtactgacacacacctctt
файл3 должен фактически выглядеть (обратите внимание на последовательности и + или - последние две строки):
VMNF01000007.1 6294425 6294650 . . - Focub_B2_mimp_1 tacagtggggggcaataagtatgaataccctttggtgtactgacacacacctctt
VMNF01000008.1 1441418 1441616 . . - Focub_II5_mimp_3 gggagtgtattgttttttctgccgctagcccattttaacatttagagtgtgcata
VMNF01000008.1 1441418 1441616 . . - Focub_B2_mimp_1 gggagtgtattgttttttctgccgctagcccattttaacatttagagtgtgcata
VMNF01000008.1 1441418 1441616 . . + Focub_B2_mimp_2 tacagtggggggcaataagtatgaataccctttgatgtactgacacacacctctt
Где, как и в Input_File2, последовательности отличаются, когда есть «-» или «+».
Таким образом, он работает во многом так же, как и предыдущий код, только с добавлением совпадения «-» или «+» в Input_File1 и Input_File2, чтобы обеспечить правильность следующей последовательности. Как я могу добавить, используя «-» или «+», чтобы определить последовательность, которая должна быть добавлена в столбце 8 к предыдущему коду?
Это код, который я использую ( отсюда ):
awk '
FNR==NR{
split($2,array,"[-(]")
key=$1 OFS array[1] OFS array[2]
mainarray[key]=$NF
next
}
{ key = $1 OFS $2 OFS $3 }
(key in mainarray){
print $0,mainarray[key]
}
' Input_file2 Input_file1
Любой совет? Спасибо