После моего предыдущего поста на моего старого поста и так как он не полностью ответил на мой вопрос.Я хотел бы знать, как я могу отсортировать мой массив a
, содержащий несколько строк конкретного кода тега из массива b
.
У меня есть массив a
, что следующие строки
rs6605071 chr1:962943 C ENSG00000188976 ENST00000487214 stuff
rs6605071 chr1:962943 C ENSG00000187961 ENST00000622660 stuff
rs6605071 chr1:962943 C 84069 NM_001160184.1 stuff
rs6605071 chr1:962943 C 339451 NC_006462594.2 stuff
rs6605071 chr1:962943 C ENSG00000135234 ENST00000624144 stuff
rs6605071 chr1:962943 C 339451 XR_001737138.1 stuff
rs6605071 chr1:962943 C 334324 NC_006462632.2 stuff
rs6605071 chr1:962943 C 84333 NM_004353462.1 stuff
rs6605071 chr1:962943 C 339451 XM_006710600.3 stuff
и другой упорядоченный массив b
, который имеет следующие строки:
NC
NG
NM
NP
NR
XM
XP
XR
WP
Я бы хотел упорядочить строки в массиве a
в соответствии с порядком массива b
в столбце 5чтобы получить желаемый результат:
rs6605071 chr1:962943 C 334324 NC_006462632.2 stuff
rs6605071 chr1:962943 C 339451 NC_006462594.2 stuff
rs6605071 chr1:962943 C 84069 NM_001160184.1 stuff
rs6605071 chr1:962943 C 84333 NM_004353462.1 stuff
rs6605071 chr1:962943 C 339451 XM_006710600.3 stuff
rs6605071 chr1:962943 C 339451 XR_001737138.1 stuff
rs6605071 chr1:962943 C ENSG00000188976 ENST00000487214 stuff
rs6605071 chr1:962943 C ENSG00000187961 ENST00000622660 stuff
rs6605071 chr1:962943 C ENSG00000135234 ENST00000624144 stuff
В моем предыдущем посте была предложена следующая команда:
awk -v OFS='\t' '
FNR==NR{
split($5,a,"_")
array[a[1]]=$0
next
}
($1 in array) {
print array[$0]
b[$1]
}
END{
for(i in b){
delete array[i]
}
for(j in array){
print array[j]
}
}' <(printf '%s\n' "${a[@]}") <(printf '%s\n' "${b[@]}")
, но она печатает:
rs6605071 chr1:962943 C 334324 NC_006462632.2 stuff
rs6605071 chr1:962943 C 84069 NM_001160184.1 stuff
rs6605071 chr1:962943 C 339451 XM_006710600.3 stuff
rs6605071 chr1:962943 C 339451 XR_001737138.1 stuff
rs6605071 chr1:962943 C ENSG00000188976 ENST00000487214 stuff
rs6605071 chr1:962943 C ENSG00000187961 ENST00000622660 stuff
rs6605071 chr1:962943 C ENSG00000135234 ENST00000624144 stuff
Как вывидите, отсутствуют строки, содержащие NM
и NC
.Не могли бы вы сказать мне, как я могу обновить эту команду для вывода желаемого результата?
Заранее спасибо.