Удалить дублированные записи в таблице на основе первого столбца (который состоит из двух значений, разделенных двоеточием) - PullRequest
2 голосов
/ 23 мая 2019

Мне нужно отсортировать и удалить дублированные записи в моей большой таблице (разделенные пробелами), основываясь на значениях в первом столбце (которые обозначают chr: position).

Исходные данные выглядят так:

1:10020 rs775809821
1:10039 rs978760828
1:10043 rs1008829651
1:10051 rs1052373574
1:10051 rs1326880612
1:10055 rs892501864

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

1:10020 rs775809821
1:10039 rs978760828
1:10043 rs1008829651
1:10051 rs1052373574
1:10055 rs892501864

Я пробовал следовать этому посту и его вариантам,но адаптированный код не работает:

sort -t' ' -u -k1,1 -k2,2 input > output 

Результат:

1:10020 rs775809821

Кто-нибудь может посоветовать?Спасибо!

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Это довольно легко сделать с awk. Разделите файл на пробел или : в качестве разделителя полей и сгруппируйте строки по слову после двоеточия

awk -F'[: ]' '!unique[$2]++' file

-F[: ] определяет разделитель полей для разделения отдельных слов в строке, а деталь !unique[$2]++ создает карту хеш-таблицы на основе значения из $2. Мы увеличиваем значение каждый раз, когда значение отображается в $2, поэтому на следующей итерации условие отрицания ! в строке будет препятствовать повторной печати строки.

Определение регулярного выражения с флагом -F может поддерживаться не во всех awk версиях. POSIX-совместимым способом вы можете сделать

awk '{ split($0,a,"[: ]"); val=a[2]; } !unique[val]++ ' file

В приведенной выше части предполагается, что вы хотите создать уникальный файл, основанный на слове после :, но для полностью основанного на первом столбце только просто сделайте

awk '!unique[$1]++' file
0 голосов
/ 23 мая 2019

, поскольку ваши входные данные довольно просты, команда будет очень простой.

sort file.txt | uniq -w7

Это просто отсортировать файл и сделать уникальное с первыми 7 символами. данные для первых 7 символов - это числа, если какой-либо параметр aplhabets используется -i в команде.

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