2016-07-02 2 views
0

У меня есть текстовый file1, который имеет некоторые идентификаторы, как:Grep каждая строка текстового файла в другой вкладке отделенного файл

c10013_g2_i1|m.63|vomeronasal type-1 receptor 4-like 
    c10015_g1_i1|m.409|vomeronasal type-1 receptor 1-like 

Я использовал grep '^[^|]*' file1 извлечь строку, прежде чем | из file1.

Я хочу, чтобы каждая из этих строк greped соответствовала строкам из другого файла2 и возвращала всю строку при согласовании. file2 выглядит следующим образом:

c10013_g2_i1 781 622.2 73 5.95 5.16 
    c10014_g1_i1 213 58.67 3 2.59 2.25 
    c10014_g2_i1 341 182.35 4 1.11 0.96 
    c10015_g1_i1 404 245.23 16 3.31 2.87 
    c10017_g1_i1 263 105.37 6 2.89 2.5 

Наконец, результат должен выглядеть следующим образом:

c10013_g2_i1|m.63|vomeronasal type-1 receptor 4-like 781 622.2 73 5.95 5.16 
c10015_g1_i1|m.409|vomeronasal type-1 receptor 1-like 404 245.23 16 3.31 2.87 

ответ

-1

Похоже, вы пытаетесь присоединиться на первом поле каждого файла. На самом деле есть команда join, которая может это сделать. Вам нужно изменить file1 немного (join работы на пространствах):

cat file1 | sed 's/^\([^|]*\)[|]/\1 |/' | sort > file1-delimited 

Тогда вы можете join их:

cat file2 | sort | join file1-delimited - 

c10013_g2_i1 |m.63|vomeronasal type-1 receptor 4-like 781 622.2 73 5.95 5.16 
c10015_g1_i1 |m.409|vomeronasal type-1 receptor 1-like 404 245.23 16 3.31 2.87 

Это вы должны получить 95% пути там, но формат может не быть совершенным.

2

Вы можете использовать awk:

awk 'FNR == NR { 
    split($0, a, /[|]/) 
    seen[a[1]] = $0 
    next 
} 
$1 in seen { 
    $1 = seen[$1] 
    print 
}' file1 file2 

c10013_g2_i1|m.63|vomeronasal type-1 receptor 4-like 781 622.2 73 5.95 5.16 
c10015_g1_i1|m.409|vomeronasal type-1 receptor 1-like 404 245.23 16 3.31 2.87 
1

для структурированного текста, awk король инструментов.

$ awk 'NR==FNR{split($0,v,"|");a[v[1]]=$0; next} 
     $1 in a{k=$1; $1=""; print a[k] $0}' file1 file2 

c10013_g2_i1|m.63|vomeronasal type-1 receptor 4-like 781 622.2 73 5.95 5.16 
c10015_g1_i1|m.409|vomeronasal type-1 receptor 1-like 404 245.23 16 3.31 2.87 
Смежные вопросы