Awk условный фильтр одного файла на основе другого (или других решений)

Начинающему программированию здесь нужна помощь в модификации скрипта AWK, чтобы сделать его условным. Альтернативные не-awk решения также очень приветствуются.

НОТА Основная фильтрация теперь работает благодаря помощи Birei, но у меня есть дополнительная проблема, подробности см. В примечании ниже.

У меня есть серия входных файлов с 3 столбцами, например, так:

chr4    190499999   190999999
chr6    61999999    62499999
chr1    145499999   145999999

Я хочу использовать эти строки, чтобы отфильтровать другой файл (refGene.txt) и, если строка в файле одна объединяет строку в refGene.txt, вывести столбец 13 в refGene.txt в новый файл 'ListofGenes_ $ е», Самым сложным для меня является то, что я хочу, чтобы он считался совпадением, пока столбец один (например,chr4 ','chr6 ','CHR1' ) и столбец 2 И / ИЛИ столбец 3 соответствует эквивалентным столбцам в файле refGene.txt. Эквивалентные столбцы между двумя файлами: $ 1 = $ 3, $ 2 = $ 5, $ 3 = $ 6. Тогда я не уверен в awk, как не печатать всю строку из refGene.txt, а только столбец 13.

НОТА Я добился условной фильтрации, описанной выше, благодаря помощи Birei. Теперь мне нужно включить дополнительное условие фильтра. Мне также нужно вывести столбец $ 13 из файла refGene.txt, если любая из областей между значениями $ 2 и $ 3 пересекается с областью между $ 5 и $ 6 в файле refGene.txt. Это кажется более хитрым, поскольку требует математических вычислений, чтобы увидеть, перекрываются ли регионы.

Мой сценарий до сих пор:

FILES=/files/*txt   
for f in $FILES ;
do

    awk '
        BEGIN {
            FS = "\t";
        }
        FILENAME == ARGV[1] {
            pair[ $1, $2, $3 ] = 1;
            next;
        }
        {
            if ( pair[ $3, $5, $6 ] == 1 ) {
                print $13;
            }
        }
    ' $(basename $f) /files/refGene.txt > /files/results/$(basename $f) ;
done

Любая помощь очень ценится. Спасибо!

Rubal

Ответы на вопрос(1)

Ваш ответ на вопрос