2016-04-05 5 views
1

Ich habe eine Multi-Gigabyte-Textdatei, die wie folgt aussieht:Textdatei Parsing zu einer CSV-Datei unter Verwendung der sed

>seq1 
AAAUAAAUAAAUAAA 
............... ( 0.00) 
>seq2 
AAAUAAAUAAAUAAU 
............... ( 0.00) 
>seq3 
AAAUAAAUAAAUAAC 
............... ( 0.00) 
>seq4 
AAAUAAAUAAAUAAG 
............... ( 0.00) 
>seq5 
AAAUAAAUAAAUAUA 
............... ( 0.00) 

Und ich brauche es in ein Format zu bekommen, die ich in eine MySQL-Tabelle Dump kann . Mein Gedanke ist es eine CSV-Datei zu machen, die wie folgt aussieht:

>seq1,AAAUAAAUAAAUAAA,...............,( 0.00) 
>seq2,AAAUAAAUAAAUAAU,...............,( 0.00) 

Aber ich bin nicht sicher, wie die Regex schreiben seine Sache zu machen sed tun.

Antwort

2

Versuchen Sie folgendes:

sed '/^>seq[0-9]/{N;N;s/\n/,/g;s/ \(( [0-9]\.[0-9][0-9])\)/,\1/}' file 

Hinweis:: The -i Option bearbeiten Sie die Datei anstelle, ohne Bestätigung.

  • />seq[0-9]/ Suche nach Zeilen mit >seq von einer Startnummer gefolgt
  • N;N;s/\n/,/g; nächstes zwei Zeilenende-Zeichen mit Komma
  • letzter Ersatzbefehl ersetzen Dezimalzahl zwischen Klammern mit derselben Zeichenkette ersetzen mit Komma voran
+0

gerade aus dem Tor Arbeitete ausführt! Vielen Dank! –

0

Mit einer Perl-Befehlszeile (vorausgesetzt dots Nukleotide):

0.123.516

-0 ändert den Datensatztrennzeichen zu > (076 oktal)
-p druckt automatisch die Aufzeichnung
-e die folgenden Befehle

Verwandte Themen