Поиск совпадений в 2 файлах и печать поля над совпадением - PullRequest
0 голосов
/ 09 декабря 2018

Файл1:

2987571 2988014
4663633 4668876
4669084 4669827
4669873 4670130
4670212 4670604
4670604 4672469
4672502 4672621
4672723 4673088
4673102 4673518
4673521 4673895
4679698 4680174
5756724 5757680
5757937 5758506
5758855 5759202
5759940 5771528
5772524 5773063
5773005 5773106
5773063 5773452
5773486 5773776
5773836 5774189

Файл2:

gene            complement(6864294..6865061)
                     /locus_tag="HCH_06747"
     CDS             complement(6864294..6865061)
                     /locus_tag="HCH_06747"
                     /codon_start=1
                     /transl_table=11
                     /product="hypothetical protein"
                     /protein_id="ABC33372.1"
                     /translation="MIKQLVRPLFTGKGPNFSELSAKECGVGEYQLRYKLPGNTIHIG
                     MPDAPVPARVNLNADLFDSYGPKKLYNRTFVQMEFEKWAYKGRFLQGDSGLLSKMSLH
                     IDVNHAERHTEFRKGDLDSLELYLKKDLWNYYETERNIDGEQGANWEARYEFDHPDEM
                     RAKGYVPPDTLVLVRLPEIYERAPINGLEWLHYQIRGEGIPGPRHTFYWVYPMTDSFY
                     LTFSFWMTTEIGNRELKVQEMYEDAKRIMSMVELRKE"
     gene            complement(6865197..6865964)
                     /locus_tag="HCH_06748"
     CDS             complement(6865197..6865964)
                     /locus_tag="HCH_06748"
                     /codon_start=1
                     /transl_table=11
                     /product="hypothetical protein"
                     /protein_id="ABC33373.1"
                     /translation="MIKQIVRPLFTGKGPNFSELNVKECGIGDYLLRYKLPGNTIDIG
                     MPDAPVPSRVNLNADLFDSYDPKKLYNRTFVQMEFEWWAYRGLFLQGDSGLLSKMSLH
                     IDVNRINPNSPLGGSDLESLETYLREDYWDYYEAEKNIDGVPGSNWQKRYDFDNPDEV
                     RAKGYIPVRRLVLVLLPEIYVKERINDVEWLHYSIDGEGIAGTNITYYWAYPLTNNYY
                     LTFSFRTTTELGRNEQRYQRMLEDAKQIMSMVELCKG"
     gene            complement(6865961..6867109)
                     /locus_tag="HCH_06749"
     CDS             complement(6865961..6867109)

Цель состоит в том, чтобы взять каждый номер 1-го столбца 1-го файла и посмотреть, появляется ли этот номер во втором файле.Если да, я хочу напечатать строку прямо над соответствием в файле2: "/ locus_tag"

Например, если в файле1 у нас 6864294, и это число также присутствует в файле2, то я бынравится печатать: / locus_tag = "HCH_06747"

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Попробовал это, и я думаю, что это будет работать:

for i in $(cat file1 | awk -F " " '{print $1 '\n'; print $2}')
do
        grep -m1 $i file2 -A1 | tail -1

done
0 голосов
/ 09 декабря 2018

Вот примерный пример:

awk '
NR==FNR {                                    # hash file 1 to a
    a[$1]
    next
}
{
    q=$0                                     
    while(match($0,/[0-9]+/)) {              # find all numeric strings
        if((substr($0,RSTART,RLENGTH) in a)) # test if it is in a
            print p                          # and output previous record p
        $0=substr($0,RSTART+RLENGTH)         # remove match from record
        }
    p=q                                      # store current record to p
}' file1 file2

                     /locus_tag="HCH_06747"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...