awk для разбора поля, если конкретное значение находится в другом - PullRequest
0 голосов
/ 09 января 2019

В awk ниже я пытаюсь выполнить синтаксический анализ $2, используя _, только если $3 является определенным значением (ID). Я читаю это проанализированное значение в массив и собираюсь использовать его в качестве ключа в поиске. awk выполняется, но вся строка 2 или строка с ID в $3 печатает не только желаемое. Оператор печати предназначен только для того, чтобы увидеть, какие результаты (только для тестирования) и не будет частью сценария. Спасибо:).

AWK

awk -F'\t' '$3=="ID"
            f="$(echo $2|cut -d_ -f1,1)"
            {
            print $f
            }' file

файл tab-delimited

R_Index locus   type
17  chr20:31022959  NON
18  chr11:118353210-chr9:20354877_KMT2A-MLLT3.K8M9  ID

желательно

$f = chr11:118353210-chr9:20354877

1 Ответ

0 голосов
/ 09 января 2019

Не совсем ясно, не могли бы вы попробовать следующее.

awk '{split($2,array,"_");if(array[2]=="KMT2A-MLLT3.K8M9"){print array[1]}}' Input_file

Или, если вы хотите изменить верхнее значение 2-го поля вместе с печатью всех строк, попробуйте выполнить один раз.

awk '{split($2,array,"_");if(array[2]=="KMT2A-MLLT3.K8M9"){$2=array[1]}} 1' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...