фильтровать и извлекать различные части таблицы, используя условия ввода из другого файла в linux - PullRequest
1 голос
/ 04 февраля 2020

У меня есть файл - list.txt

Name    CHR:BP  CHR BP
ABC 1:72837239  1   72837239
DEF 1:72837500  1   72837500
GHJ 1:72836456  1   72836456
FGG 1:72940273  1   72940273
GHF 1:72837490  1   72837490

У меня есть другой файл, который представляет собой длинный список, например: region.txt

 Point  uniqID  ID  CHR pos p   start   end
5   ABC ABC 1   72837239    7.37E-8 72512988    74099273
61  DEF DEF 6   28354835    1.91E-9 25480328    29509596

Я хочу отфильтровать и сохранить каждую отфильтрованную часть файла. Пока у меня есть следующее, которое, очевидно, не работает.

    cat region.txt | while read -r j ; do awk -F " " '{ if(($3 of list.txt == $j$4 ) \
&& ($4 of  list.txt >= $j$7 in && $4 of list.txt <= $j$8)) { print } }' list.txt > region_$j$1.txt  ; done

Здесь $ j должен быть номером строки. Моя цель состоит в том, чтобы l oop каждой строке region.txt, чтобы извлечь все строки в list.txt, где Col3 равно Col4 of region.txt, а значения в Col4 list.txt находятся между col7 и col8 региона. текст. Каждая из отфильтрованных строк должна быть сохранена как file_Col1_value_of_region.txt. Например, он будет сохранен как file_5.txt, а следующий файл - как file_61.txt

Спасибо за помощь.

1 Ответ

1 голос
/ 04 февраля 2020

Это не совсем понятно, но я думаю, что вы просто ищете:

$ cat list.txt 
Name    CHR:BP  CHR BP
ABC 1:72837239  1   72837239
DEF 1:72837500  1   72837500
GHJ 1:72836456  1   72836456
FGG 1:72940273  1   72940273
GHF 1:72837490  1   72837490
$ cat region.txt 
 Point  uniqID  rsID    CHR pos p   start   end
 5   1:72837239:C:T  ABC 1   72837239    7.37E-8 72512988    74099273
 61  6:28354835:C:G  DEF 6   28354835    1.91E-9 25480328    29509596
$ awk 'NR>1 && NR==FNR{hi[$4]=$8; low[$4]=$7; next} NR==1;  NR>1 && $4 < hi[$3] && $4 > low[$3]' region.txt list.txt
 Point  uniqID  rsID    CHR pos p   start   end
ABC 1:72837239  1   72837239
DEF 1:72837500  1   72837500
GHJ 1:72836456  1   72836456
FGG 1:72940273  1   72940273
GHF 1:72837490  1   72837490
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...