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