Изменить имена столбцов, используя файл сопоставления - PullRequest
0 голосов
/ 01 марта 2020

У меня есть файл с 3 столбцами, подобный этому:

NC_0001 10 x
NC_0001 11 x
NC_0002 90 y

Я хочу изменить имена первого столбца, используя другой файл .txt, который содержит преобразование, это как:

NC_0001 1
NC_0001 1
NC_0002 2

...

Итак, наконец, у меня должно быть:

1 10 x
1 11 x
2 90 y

Как я могу это сделать? PS первый файл очень большой (50 ГБ), поэтому я должен использовать команду unix, например awk.

1 Ответ

1 голос
/ 01 марта 2020
awk -f script.awk map_file data_file
NR == FNR {                  # for the first file
    tab[$1] = $2             # create a k/v of the colname and rename value
}

NR != FNR {                  # for the second file
    $1 = tab[$1]             # set first column equal to the map value
    print                    # print
}

Как однострочный

awk 'NR==FNR{t[$1]=$2} NR!=FNR{$1=t[$1];print}' map_file data_file

Если возможно, вы должны разбить первый файл и запустить эту команду для каждого файла раздела параллельно. Затем присоединитесь к результатам.

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