Как разделить файл, чередуя префикс, используемый для выходных файлов?

awk '
    FNR == NR {
        # Read file1
        i=$1;
        sub($1 FS, "");
        a[i]=$0; next;
    }
    (FNR < NR) && (FNR == 1) {
        # add new column header to title row (first line of file1)
        print $0 "exp"; next;
    }
    { 
        # Read file2 and append matching line from file1
        print $0 a[$1];
    }
' file2 file1

Обратите внимание, что file2 читается перед file1 в решении выше, чтобы извлечь первый столбец для поиска (и поэтому file2 указывается перед file1). Кроме того, это решение будет использовать последнее совпадение в file2 (в вашем примере hat_160460 встречается дважды в file2).

Результат:

file1 name value1 value2 value3 exp
hat_197050 30.5348 37.2617 1.2203 
hat_160460 20.8679 21.0134 1.00697 AA:0003700,AA:0003707
hat_092950 63.875 63.2321 0.989935

Если вы хотите использовать первое совпадение в file2, то замените раздел FNR == NR выше на

FNR == NR {
    # Read file1
    i=$1;
    sub($1 FS, "");
    if (! a[i]) a[i]=$0;
    next;
}

Результат:

file1 name value1 value2 value3 exp
hat_197050 30.5348 37.2617 1.2203 
hat_160460 20.8679 21.0134 1.00697 AA:0003700,AA:0003707,AA:0005634,AA:0006355,AA:0043401 
hat_092950 63.875 63.2321 0.989935
4
29.07.2016, 08:59
0 ответов

Теги

Похожие вопросы