Использование Uniq -c с регулярным выражением или подсчет количества удаленных строк

У меня есть файл с разделителями табуляции, в котором содержится информация о генетическом материале. Некоторая информация разрезается на меньший файл табуляции с некоторыми извлеченными столбцами, а uniq используется для обеспечения отсутствия дубликатов. Счет хранится, что важно позже по трубопроводу. Я хочу изменить основу функции uniq, просто основываясь на последовательности в одном поле, на регулярное выражение из другого поля. Поле, которое я хочу извлечь, находится в таком формате:

14:50065421-50065521:12397472_t14_w100_x1 

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

 14:50065421-50065521 

Я проверил регулярное выражение '((^ [0-9] {0,2} | x | y | MT): [0-9] {0,9} – [0-9] {0,9}: ) ', и он работает с небольшим образцом данных. Я нашел некоторые способы использования grep и perl-скрипта, которые работают для удаления строк на основе регулярного выражения, но ни один из них не обеспечивает подсчет (именно поэтому uniq намного более идеален). Есть ли способ использовать регулярное выражение с uniq? Или есть лучший способ, который также сохранит количество удаленных?

Текущий код:

 cat ${TAB_FILE} | \ sed -e '1,2d' | \ cut -f3,4 | \ sort -k1 -u | \ sort -k2 | \ uniq -cf1| \ sort -rn > t1 cat ${TAB_FILE} | \ sed -e '1,2d' | \ awk {'print $3"\t "$6"\t" $7"\t "$4'} | \ sort -k4 > t2 awk 'FNR==NR {C[$2]=$1;next}FNR==1 \ {print "Count Chromosome:Positions:QNAME Sequence Exon Transcript_ID"; next}$1 in C \ {print C[$1], $1, $4, $3, $2}' t1 t2 > t3 cat t3 | awk '{print "//NODECLASS\t\"" $2"_"$1 "\"\t\"Exon " $4 "\"\t\"" $5 "\""}' 

С первого шага это столбец 1 разреза, на который я хотел бы основывать свое регулярное выражение, вместо того, чтобы использовать столбец 2. Любая помощь будет принята с благодарностью, пожалуйста, не стесняйтесь спрашивать, нужно ли мне разъяснять что-либо.

Пример файла табуляции:

 queryHits subjectHits readname readSeq geneid transcriptid exonnumber genename biotype 350851 1 14:50065421-50065521:12397472_t14_w100_x1 CGCTGCCAGCTGCGCGCTCGGGGGAAAAGACGTTGCGCCCCCGCCGACTGCCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCA ENSG00000165501 ENST00000298288 1 LRR1 protein_coding 350851 5 14:50065421-50065521:12397472_t14_w100_x1 CGCTGCCAGCTGCGCGCTCGGGGGAAAAGACGTTGCGCCCCCGCCGACTGCCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCA ENSG00000165501 ENST00000318317 1 LRR1 protein_coding 350851 8 14:50065421-50065521:12397472_t14_w100_x1 CGCTGCCAGCTGCGCGCTCGGGGGAAAAGACGTTGCGCCCCCGCCGACTGCCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCA ENSG00000165501 ENST00000554869 1 LRR1 protein_coding 350852 1 14:50065461-50065561:12655987_t14_w100_x1 CCGCCGACTGCCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCAACCACGGCGAGAACCCGGCCCTGCTAAGGGAGAAGGGAAG ENSG00000165501 ENST00000298288 1 LRR1 protein_coding 350852 5 14:50065461-50065561:12655987_t14_w100_x1 CCGCCGACTGCCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCAACCACGGCGAGAACCCGGCCCTGCTAAGGGAGAAGGGAAG ENSG00000165501 ENST00000318317 1 LRR1 protein_coding 350852 8 14:50065461-50065561:12655987_t14_w100_x1 CCGCCGACTGCCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCAACCACGGCGAGAACCCGGCCCTGCTAAGGGAGAAGGGAAG ENSG00000165501 ENST00000554869 1 LRR1 protein_coding 350853 1 14:50065471-50065571:22679947_t13_w100_x1 CCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCAACCACGGCGAGAACCCGGCCCTGCTAAGGGAGAAGGGAAGCCGTTTCCCG ENSG00000165501 ENST00000298288 1 LRR1 protein_coding 350853 5 14:50065471-50065571:22679947_t13_w100_x1 CCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCAACCACGGCGAGAACCCGGCCCTGCTAAGGGAGAAGGGAAGCCGTTTCCCG ENSG00000165501 ENST00000318317 1 LRR1 protein_coding 350853 8 14:50065471-50065571:22679947_t13_w100_x1 CCGGTTTCCCGGGCGCGAGCCCGGATCCAGGTGGTCAGTCCCGGTACGCAACCACGGCGAGAACCCGGCCCTGCTAAGGGAGAAGGGAAGCCGTTTCCCG ENSG00000165501 ENST00000554869 1 LRR1 protein_coding 

Пример выходного файла, в котором uniq не используется, я хочу удалить дубликаты, например, строки 4, 5 и 6 или 8, 9 и 10:

 //NODECLASS "Chromosome:Positions:QNAME_Count" "Exon Exon" "Transcript_ID" //NODECLASS "14:50067283-50067383:20149917_t14_w100_x1_1" "Exon 1" "ENST00000557531" //NODECLASS "14:50067284-50067366:14257122_t14_w100_x1_2" "Exon 1" "ENST00000557531" //NODECLASS "14:50067285-50067385:2072777_t12_w100_x1_1" "Exon 1" "ENST00000557531" //NODECLASS "14:50074262-50074362:4355312_t12_w100_x1_1" "Exon 3" "ENST00000298288" //NODECLASS "14:50074262-50074362:4355312_t12_w100_x1_1" "Exon 4" "ENST00000540712" //NODECLASS "14:50074262-50074362:4355312_t12_w100_x1_1" "Exon 4" "ENST00000554869" //NODECLASS "14:50067286-50067386:15839225_t12_w100_x1_3" "Exon 1" "ENST00000557531" //NODECLASS "14:50074263-50074363:8914169_t11_w100_x1_1" "Exon 3" "ENST00000298288" //NODECLASS "14:50074263-50074363:8914169_t11_w100_x1_1" "Exon 4" "ENST00000540712" //NODECLASS "14:50074263-50074363:8914169_t11_w100_x1_1" "Exon 4" "ENST00000554869" //NODECLASS "14:50067287-50067387:5439923_t13_w100_x1_1" "Exon 1" "ENST00000557531" //NODECLASS "14:50067287-50067387:14106336_t12_w100_x1_3" "Exon 1" "ENST00000557531" //NODECLASS "14:50074404-50074504:15492363_t11_w100_x1_1" "Exon 3" "ENST00000298288" //NODECLASS "14:50074404-50074504:15492363_t11_w100_x1_1" "Exon 4" "ENST00000540712" //NODECLASS "14:50074404-50074504:15492363_t11_w100_x1_1" "Exon 4" "ENST00000554869" //NODECLASS "14:50074135-50074235:11346262_t11_w100_x1_2" "Exon 3" "ENST00000298288" 

  • Управление дублированными строками в файлах
  • Сортировка данных журнала с помощью bash
  • Как найти количество неупорядоченных пар из списка
  • Почему uniq может игнорировать ведущие символы, но не заканчивать символы?
  • Отображение имен файлов с помощью grep
  • Мне нужны данные из файла csv, которого нет во втором файле csv
  • Получение размера родительских папок при использовании поиска для поиска критериев?
  • Удалите повторяющиеся строки с помощью twist
  • 2 Solutions collect form web for “Использование Uniq -c с регулярным выражением или подсчет количества удаленных строк”

    Я не уверен, что вы хотите точно, так как вы, похоже, слишком зациклились на своем типе / uniq.

    Однако, если все, что вам нужно, это обрезка повторяющихся строк, например, 4,5,6 и 8,9,10, тогда вы можете сделать это в своем последнем файле, который вы показываете, который имеет // строки NODECLASS:

     perl -F\" -lane ' print,next if $. < 3; print if ! $h{($F[1] =~ /:(.*?):/)[0]}++; ' NODE_CLASS_file 

    где первые две строки пропущены. В то время как для остальных мы смотрим на 2-ое поле, число между: /:(.*?):/ предоставит вам номер, после которого вам нужно попасть в скалярный контекст, расширив его в (...)[0] и передать это как ключ к хешу %h . Распечатайте текущую строку только в том случае, если этот ключ еще не был замечен.

    Мне удалось найти грубое решение, в котором я добавляю начальные позиции в файл вкладок в виде отдельного столбца. Затем при создании файла Nodeclass я извлекаю этот столбец и использую sort | uniq -c на основе этого вместо столбца последовательности. Кажется, он делает то, что я хотел, но он немного медленнее, потому что скрипт, создающий файл вкладки, должен создать целый дополнительный столбец! Благодаря 🙂

    Interesting Posts

    Как Ubuntu блокирует мой Live USB?

    Почему флуд-пинг на localhost приводит к снижению RTT?

    Где могут быть установлены переменные PROMPT_COMMAND?

    Что происходит с службами, которые не имеют сценарий убийства на новом уровне запуска?

    Kali Linux live usb persistance

    Как использовать память (используя RAM) с помощью команды Linux?

    Как подключиться к серверу ssh и запросить программные подсказки?

    Параллельное выполнение сценария bash

    Сортировка файлов с определенным расширением с измененным временем и сохранение их в массив

    Запустите git pull из сценария запуска оболочки

    Помните половину типизированной команды, пока я проверяю что-то

    Как удалить установленные места, которые были добавлены с помощью команды mount?

    Webdav не будет подключаться: 405 Метод не разрешен

    Arch Linux загружается до tty1 по умолчанию вместо tty7 после обновления

    Как я могу криптографически проверить sabayon.iso? Есть ли сертификаты?

    Linux и Unix - лучшая ОС в мире.