Regex per abbinare "una stringa di lunghezza inferiore a X risiede tra due"> "simboli"


1

Hanno testo in questo modulo:

> xxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxx

> xxxxxxxxxxxxxx

xXXXXXXXXXX

>

Ho bisogno di regex per abbinare tutto >xxx...se c'è meno di, diciamo un 100, xtra i >simboli. Come posso fare questo?

Il vero problema è: "smalt.c: 334 ERRORE: sequenza troppo corta per essere sottoposta a hash" quando si tenta di indicizzare il file fasta con sequenze di riferimento di più virus. Ha funzionato prima, quando nel file erano presenti solo sequenze più lunghe.

Non ho trovato una soluzione per l'errore smalt (e anche se lo farei, preferirei eseguirlo prima con le impostazioni predefinite), quindi

Devo rimuovere tutte le sequenze di riferimento più brevi dal file di riferimento.

Risposte:


1

puoi usare grepper darti solo le parti del file in cui sono presenti più di 100 caratteri >e scrivere i risultati in un nuovo file (che quindi dovrebbe funzionare con fasta):

grep -Pzo '>[^>]{100,}' fasta.txt > fasta_wo_short_genes.txt

spiegazione:

  • -P dice a grep di accettare le espressioni regolari di perle (per qualche motivo, non sono riuscito a farlo funzionare con le normali espressioni regolari di grep)
  • z dice a grep di vedere l'intero file come un'unica grande riga
  • odice a grep di produrre solo le parti corrispondenti (altrimenti, a causa del zflag, produrrebbe sempre l'intero file se trova qualche corrispondenza)

l'espressione regolare:

  • > il carattere che separa le sequenze geniche del virus
  • [^>] corrisponde a qualsiasi personaggio tranne >
  • {100,}corrisponde a 100 o più ripetizioni dell'espressione precedente (in questo caso [^>])

potresti quindi accettare la mia risposta, per favore? (fai clic sul segno di spunta vuoto sotto i pulsanti di voto a sinistra della risposta). Davvero apprezzato.
Thawn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.