[RISOLTO]Grep o AWK per estrarre blocco di testo

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
cloudany
Prode Principiante
Messaggi: 121
Iscrizione: domenica 28 febbraio 2010, 12:54
Desktop: Unity
Distribuzione: Ubuntu

[RISOLTO]Grep o AWK per estrarre blocco di testo

Messaggio da cloudany »

Ciao ragazzi, altro giro altro dubbio, allora ho un giga file di testo di questo tipo:

Codice: Seleziona tutto

>gi|526245010|ref|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTCAATGGTAAGACCGGGGATGTAATACTGATGGCCAAACATGTAGGGGCCCCAAGTATAAATGATCTCAGAGCATACG
CCCTGAAAGGCGAACCCGCGGGGCAGTACACGCCTACGTTTTTGAATGGTTGGTACGTACAAGCAGGTGAAGTCAAAGGG
GTTTGCTACTACAAGGATCAATTCGGCTACGTCCACCTTTATGGCACTTGCTCAGGGACTAAAACTGAGTTTGGCACACC
TTTATTCAACCTCCCGGCTGGGTTTCGTCCAAGTGGTGTAATCCGCGTTGGTTGTCTGATGATCGACTTTGCAGACTACT
CCAGATCTATTCAATTTCTAGGTGTATATCCCAGTGGAGAGGTATTGATAGAAAGTTATGGGTTACCCGGTTTTGTCTCG
etc...
TTTAGCATTTTCCCCTCCTCATTTTACGGGCAAAGGTAGGTGTTTGAGATGGATAAGATCATACAAGCGAGTCGAGTAGA
CAAAGCAGGTAAATACGTAGAAGCGTTGGCACTCATAGAGAAAGATGGCAAGTATTTTAACCTTTTAGATCAAGAGGTAC
CCATAGATGATACTGTCGTATTTGATCCTTTACCCATGCCGATTTATACGCCTATTTGGGATTTTAAAACTAAGACATGG
AAAGAAGGTTTATCTCAAGAGGAAATTGATCAGATCAAAAATCGCCCAGATCCTCCAAACCCAATGAAGGTCATGGAAAA
>gi|460042095|ref|NC_020479.1| Bacillus phage Curly, complete genome
CCCCCACCCCGATGAGGTCGCCTTCTCGTTCCCTGACACCAGAAGCTAATAAGGAGGAATACATATGAGTAAAAGTTGGA
AAGACAAGGATTACGAAGCAAAACACGAGGCAGAACACATTAGACACTACATCAGGAAAGCCAAGAAAGACCCCGAGGCG
GACTATCTGGCGGAGCTGATGTAAAAGCTATTCAGACAACTAACGCAGACTTCATTGGATACATTGAGCACCACGACCGC
AAGATCATGGAATCACTCCTTGTACCGCCATCCCTTCTAGGATTATCTCGTGGTCAATCTGGCTCTTATGCGCTGTCTTC
etc...
>gi|460042095|ref|NC_020479.1| Bacillus phage Curly, complete genome
etc...
Devo riuscire ad estrarre (in bash) il blocco di genoma fra i due >gi.... questo per 400 blocchi, iterarlo per 400 volte è l'ultimo dei miei problemi, il problema risiede nell'estrazione del blocco ho tentato con:

Codice: Seleziona tutto

awk '/>gi/,/^$/{print}' viral.1.1.genomic.fna
sed -n '/>gi/, /'\n'/p' viral.1.1.genomic.fna
senza risultato, qualcuno di voi potrebbe risolvermi il dubbio? Grazie mille davvero!
Ultima modifica di cloudany il venerdì 6 maggio 2016, 9:23, modificato 1 volta in totale.
" 4 letters are enough to explain mankind"
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: Grep o AWK per estrarre blocco di testo

Messaggio da crap0101 »

con awk meglio usare >gi come separatore:

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ cat input.txt 
>gi|526245010|ref|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
>gi|526245010|ref1|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
>gi|526245010|ref2|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
crap0101@orange:/tmp/foo$ awk --posix -v RS='>gi' '{print $0 "###"}' input.txt
###
|526245010|ref|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
###
|526245010|ref1|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
###
|526245010|ref2|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
###
se però devi estrarli e presumibilmente metterli su file separati conviene usare csplit:

Codice: Seleziona tutto

crap0101@orange:/tmp/foo$ csplit input.txt '/>gi/' '{*}'
0
247
248
248
crap0101@orange:/tmp/foo$ l xx*
xx00  xx01  xx02  xx03
crap0101@orange:/tmp/foo$ cat xx00
crap0101@orange:/tmp/foo$ cat xx01
>gi|526245010|ref|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
crap0101@orange:/tmp/foo$ cat xx02
>gi|526245010|ref1|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
crap0101@orange:/tmp/foo$ cat xx03
>gi|526245010|ref2|NC_021865.1| Paenibacillus phage phiIBB_Pl23, complete genome
TTTGTGGCATTGTGAACTCTCTTATACAAGCCGACACGACTACGATTTTCAACCAATTCCAGAAATGGTTTGAAAGCCGT
ACAGCAGACTTTGAAAAAGAGTGGAAAGAATGGCTGGAGAAGATGAAAGATCAAGGGGGAGGGAAATTTGGTGTAACATC
CGTC
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
cloudany
Prode Principiante
Messaggi: 121
Iscrizione: domenica 28 febbraio 2010, 12:54
Desktop: Unity
Distribuzione: Ubuntu

Re: Grep o AWK per estrarre blocco di testo

Messaggio da cloudany »

Grazie mille davvero , non conoscevo "csplit" prima d'ora grazie mille.
" 4 letters are enough to explain mankind"
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti