2015-07-29 5 views
0

У меня есть текстовый файл, содержащий идентификаторы последовательности. Эти файлы Ids содержат несколько дубликатов идентификаторов. Несколько идентификаторов также присутствуют более двух раз в этом файле. Я хочу найти уникальные идентификаторы в одном файле и повторные идентификаторы в другом файле. Кроме того, мне также интересно найти число, сколько раз повторяющиеся идентификаторы, присутствующие в файле.Как получить уникальные идентификаторы из txt-файла?

Я нашел дублированную последовательность, используя следующую команду

$ cat id.txt | grep '^>' | sort | uniq -d > dupid.txt 

Это дает мне дублированные последовательности в файле «dupid.txt». Но как мне получить те, которые присутствуют более 2 раз и сколько раз они присутствуют? Во-вторых, как найти уникальные последовательности?

ответ

0

Возможно, что-то вроде поиска this answer, со многими предложениями по традиционному использованию uniq.

Кроме того, обратите внимание, что:

 
$ cat id.txt | grep '^>' 

... в основном так же, как:

 
$ grep '^>' id.txt 

так называемый "Useless Use Of Cat"

Но на ваш вопрос - найти Uniq идентификаторами, обманы и совпадения с подсчетами - вот попытка с использованием awk, которая обрабатывает свой stdin и записывает в три выходных файла, которые должен назвать пользователь, пытаясь избежать выхода из строя файлы, которые уже существуют. Один проход, но все входные данные в памяти перед началом вывода.

 
#!/bin/bash 

[ $# -eq 3 ] || { echo "Usage: $(basename $0) <uniqs> <dupes> <dupes_counts>" 1>&2; exit 1; } 

chk() { 
    [ -e "$1" ] && { echo "$1: already exists" 1>&2; return 1; } 
    return $2 
} 

chk "$1" 0; chk "$2" $?; chk "$3" $? || exit 1 

awk -v u="$1" -v d="$2" -v dc="$3" ' 
    { 
    idc[$0]++ 
    } 
    END { 
    for (id in idc) { 
     if (idc[id] == 1) { 
     print id >> u 
     } else { 
     print id >> d 
     printf "%d:%s\n", idc[id], id >> dc 
     } 
    } 
    } 
' 

Сохранить как (например) "doit.sh", а затем вызвать с помощью:

 
$ grep '^>' id.txt | doit.sh uniques.txt dupes.txt dupes_counts.txt 
Смежные вопросы