2016-05-23 10 views
2

Insgesamt noob hier und ich habe, was ich denke, ist ein einfaches genug Problem zu lösen, das hat mich völlig aus.Break String in separate Strings/Spalten

Ich habe ein Tabulator getrennte Datensatz:

NS500418:110:H2VY7BGXX:4:21601:20699:7042 chrV 8256382 True CATCTAAATTTTGTTAGGATG chrV 8256540 True GAATAATAGAAGAGGTACAGA CATCTAAATTTTGTTAGGATGTTCTTCCTCGCCTTTTCTTTCTTAATTTAAGACGTCAAAAAGCAGCATATGACAGGGATTCTGGTATTCCAATGAGATCATTTTACCAATGACGAAAAAATACGTGAGGTGTTGCAAAATGACACAAAA GAATAATAGAAGAGGTACAGAAAACGTTTGTGACGTGAAAAATGCTAAAAGCTCAAGCAATGGGTGGTCTTCTAGAACTCTGAAGAAACTGTGTTTTGTTTTCATGATCTCGGGATGCTTCAAAAACTGAAATGGGTGTCAAAGCAGGCC CATCTAAATTTTGTTAGGATGTTCTTCCTCGCCTTTT GAATAATAGAAGAGGTACAGAAAACGTTTGTGACGTGA chrV 8256416 chrV 8256566 
M03109:43:000000000-ACGWU:1:1102:11826:4015 chrIII 7513608 False TCGTTTTTTGTTCTCTAACAC chrX 15229802 False TTTTAAGTACTACCTAAGAACC TTCGCATGGATGTTTGATCCGAGAATTGGAGCTATTCTTATGCCAGTTAGTTTTTTTTCGTTTTTTGTTCTCTAACAC ATTTTGTGAAGCAATTTGGCCTTTTTTTAGTTGATCTAATTATGCGTAAACACAATTTTTAAGTACTACCTAAGAACC GTGTTAGAGAACAAAAAACGAAAAAAAACTAACTGGCATAAGAATAGCTCCAATTCTCGGATCGATCTAATTATGCGT GGTTCTTAGGTAGTACTTAAAAATTGTGTTTACGCATAATTAGATCGATCCGAGAATTGGAGCTATTCTTATGCCAGT chrIII 7513540 chrX 15229776 
NS500418:110:H2VY7BGXX:4:11407:17860:12911 chrX 4775576 True GGATAGTTTTAATTTTCTTGG chrX 16142498 True GAGTACTGCCGCGCGATCGAT GGATAGTTTTAATTTTCTTGGATATTTTTAAATTCCGCTTAAAAACAACATTGTTAAGTCCGTTTTCACAGTTTGGAACTTTCTGTAAAATTGAGACTGGGAAAACTTAATGAAATAAAAGAATAGGTGCTCTTTACAAATTAAAAACAA GAGTACTGCCGCGCGATCAATGATCTCCTTTTTGTTGGAGAAAAGATTGGAGATGACGTCTAGCGCAAGCTTTTGGCTTTCCGATTCAAGTTCTTGATCTGATAGTCTGGGAGCCTTGATTGGAGCAGCTGGGACTTTTGCAGGTTGGGA GGATAGTTTTAATTTTCTTGGATATTTTTAAATTCCG GAGTACTGCCGCGCGATCGATCTTAGAAATTAGTTAAA chrX 4775610 chrX 16142526 
NS500418:110:H2VY7BGXX:4:13612:12507:3869 chrX 11052325 False GGTCCAGCAAAACGCAGTAAAC chrI 14497739 True GTGGTGGAGGAGGAACGAATG TACTTAACCTTTGCTCCGCGGCAAAACATGATCATTTGTTCAAATAGACAATTTCGTTTTTTCTTTGACGATCAGAGTCAATGAAGTTATCTAAGGCAATCACAAAACATTTTTGAAAAGCAGCAACAGGTCCAGCAAAACGCAGTAAAC GTGGTGGAGGAGGAACGAATGGTTGTGGTCCGGCGAGTGGGGCCACTTGTGGCACAAAAGCTTGATGTCGGAGCAGATTTGGGGCGATCCCGTCTCGATGCTCGCCCACTCGGCAAAGGCGTTGATTCGGCTGGAACAACAAGCGTCTTC GTTTACTGCGTTTTGCTGGACCTGTTGCAGCTTTTCAA GTGGTGGAGGAGGAACGAATGGTTGTGGTCCGGCGAGT chrX 11052290 chrI 14497765 
NS500418:110:H2VY7BGXX:3:11604:7974:16095 chrX 7483102 False CTAGTTCAATGAGGTATGTCAT chrX 5875247 False AAAAAACTGATGGTCTTATAT CTTGGCTCAAATAAAACTGAAATCGAAAATAAAGTTTTGCATGTAAATACATTTTCAGAGTGCCTACGACTATTACCATCGAGATCGACGCGAATATAGTGTACCCTGCTTTCCTCGTTCTCGCCAACCTAGTTCAATGAGGTATGTCAT TCACAGCCACCGGATATTCTGAGATGCTTCTTTTTTTGTTGTTGTCGTTAGATGTACAGTGCCATTCCGCATATCATTGATGTTAGGATCATCTAGCATCTACCAGAATTTTTCCTTTCTCTGAATTCTAAAAAACTGATGGTCTTATAT ATGACATACCTCATTGAACTAGGTTGGCGAGAACGAGG ATATAAGACCATCAGTTTTTTAGAATTCAGAGAAAGGA chrX 7483067 chrX 5875222 
NS500418:110:H2VY7BGXX:1:12207:12144:18475 chrI 11267978 True TTTTTAGGCAGTATTCTGTGAA chrI 7633132 True GTTTTTAAGGTTTTCATCGAT TTTTTAGGCAGTATTCTGTGAACTTTCCTGCATAGTTTCCACTATGATCACCATTTTTCTAGCTCTCCTGGTTCTCACTACAAGTCCTGGACAAGTCGAGGTAAGGCTGTTTAGCCTAACCGGCCCAATGGGCCCTGCTAGGCCTCACAG GTTTTTAAGGTTTTCATCGATTTTAATTAAATTTTTATTCCAGGATGCACCAGGAAGTGAATTCAATATGCAACAGATGACATCAATGCACGACGATTCGACAACATTCACGAATCCAGTGTATGAATTAGAAGATGTTGATATGTCATC TTTTTAGGCAGTATTCTGTGAACTTTCCTGCATAGTTT GTTTTTAAGGTTTTCATCGATTTTAATTAAATTTTTAT chrI 11268013 chrI 7633159 
NS500418:152:H25C7AFXX:3:11408:4830:8603 chrIV 2481023 False TGAATCATATCAGGGCAGCTG chrIV 2542156 False CGTTGCTTGCAGTGTTCCCTT GAATTTAAATTTCCTAGTGAAAAATGACAAAAAATTATGTTTTTGTAAAAAATATCTCGAAAAAATGTTTTTTTTTTCTTTTTTTCACCTAAAATTTTTTTGTTTCAGAATTTTGTGGGTGTTGATCTATGAATCATATCAGGTCAGCTG TGAAAAAAAAAATTTGCCAAAAAAGATCAAAGAGGCGCCGCCGACAGAGAAGTGCACATGAATTATATTCAGCTGGAAATTGGAAACTGAGAGAAATCTGAATAAAACATAATTTTTTTCTCTTATTTCCGTTGCTTGCAGTGTTCCCTT CAGCTGCCCTGATATGATTCATAGAGATCAAAGAGGCGCCGCCGACAGAGAAGTGCACATGAATTATATTCAGCTGGAAATTGGAAACTGAGAGAAATCTGAATACAACATAATTTTTTTCTCTTATTTCCGTTGCTTGCAGTGTTCCCTT chrIV 2480995 chrIV 2542026

, die ich durchlaufen:

gc GSM2041038_n2_adults_dpn.TSV | 
    sls -Pattern '(chrIV.*chrIV.*chrIV.*chrIV)' | 
    Export-Csv OnlyChrIV.tsv -Delimiter "`t" 

Und bekommen (was ich nehme an ist) eine Registerkarte getrennte Datei mit Kopf- und diesen Ergebnissen:

#TYPE Selected.System.Management.Automation.PSCustomObject 
"IgnoreCase" "LineNumber" "Line" "Filename" "Path" "Pattern" "Context" "Matches" 
"True" "32" "NS500418:152:H25C7AFXX:3:11408:4830:8603 chrIV 2481023 False TGAATCATATCAGGGCAGCTG chrIV 2542156 False CGTTGCTTGCAGTGTTCCCTT GAATTTAAATTTCCTAGTGAAAAATGACAAAAAATTATGTTTTTGTAAAAAATATCTCGAAAAAATGTTTTTTTTTTCTTTTTTTCACCTAAAATTTTTTTGTTTCAGAATTTTGTGGGTGTTGATCTATGAATCATATCAGGTCAGCTG TGAAAAAAAAAATTTGCCAAAAAAGATCAAAGAGGCGCCGCCGACAGAGAAGTGCACATGAATTATATTCAGCTGGAAATTGGAAACTGAGAGAAATCTGAATAAAACATAATTTTTTTCTCTTATTTCCGTTGCTTGCAGTGTTCCCTT CAGCTGCCCTGATATGATTCATAGAGATCAAAGAGGCGCCGCCGACAGAGAAGTGCACATGAATTATATTCAGCTGGAAATTGGAAACTGAGAGAAATCTGAATACAACATAATTTTTTTCTCTTATTTCCGTTGCTTGCAGTGTTCCCTT chrIV 2480995 chrIV 2542026" "InputStream" "InputStream" "(chrIV.*chrIV.*chrIV.*chrIV)" "" "System.Text.RegularExpressions.Match[]"

Die Daten, die ich möchte, ist in der Spalte "Linie". Also gehe ich dann diese Datei durch diese:

Import-Csv OnlyChrIV.tsv -Delimiter "`t" | 
    select "line" | 
    Export-Csv OnlyChrIV_OnlyLine.tsv -Delimiter "`t" 

Und ich werde erhalten diese:

#TYPE Selected.System.Management.Automation.PSCustomObject 
"Line" 
"NS500418:152:H25C7AFXX:3:11408:4830:8603 chrIV 2481023 False TGAATCATATCAGGGCAGCTG chrIV 2542156 False CGTTGCTTGCAGTGTTCCCTT GAATTTAAATTTCCTAGTGAAAAATGACAAAAAATTATGTTTTTGTAAAAAATATCTCGAAAAAATGTTTTTTTTTTCTTTTTTTCACCTAAAATTTTTTTGTTTCAGAATTTTGTGGGTGTTGATCTATGAATCATATCAGGTCAGCTG TGAAAAAAAAAATTTGCCAAAAAAGATCAAAGAGGCGCCGCCGACAGAGAAGTGCACATGAATTATATTCAGCTGGAAATTGGAAACTGAGAGAAATCTGAATAAAACATAATTTTTTTCTCTTATTTCCGTTGCTTGCAGTGTTCCCTT CAGCTGCCCTGATATGATTCATAGAGATCAAAGAGGCGCCGCCGACAGAGAAGTGCACATGAATTATATTCAGCTGGAAATTGGAAACTGAGAGAAATCTGAATACAACATAATTTTTTTCTCTTATTTCCGTTGCTTGCAGTGTTCCCTT chrIV 2480995 chrIV 2542026"

Mein Problem ist, dass ich jetzt nicht die Zeichenfolge wieder in seine ursprüngliche Spalten brechen kann, weil ich muss fügen Sie Header hinzu und verarbeiten Sie die Daten weiter von dort.

Ich will (das ist, wie die Daten ursprünglich formatiert):

"NS500418:152:H25C7AFXX:3:11408:4830:8603" "chrIV" "2481023" "False" "TGAATCATATCAGGGCAGCTG" "chrIV" "2542156"

Nicht:

"NS500418:152:H25C7AFXX:3:11408:4830:8603" 
"chrIV" 
"2481023" 
"False" 
"TGAATCATATCAGGGCAGCTG" 
"chrIV" 
"2542156"

ich Split habe versucht, aber diese gibt eine neue Zeile für jeden Reiter wie der oben Beispiel. Ich weiß auch nicht, ob die Eingabe und/oder Ausgabe die Methoden sind, die ich hier verwenden sollte.

Dies muss auch für eine Reihe von Linien durchgeführt werden. Ich habe hier nur eine Zeile als Beispiel verwendet.

Antwort

3

Verwenden Sie nicht Select-String zum Filtern der Daten. Verwenden Sie Import-Csv, um die Datei zu importieren. Wenn Sie Ihre Datei, die Sie nicht über eine Kopfzeile haben können Ihre eigenen Header über die -Header Parameter angeben:

$inFile = 'GSM2041038_n2_adults_dpn.TSV' 
$outFile = 'OnlyChrIV.tsv' 

$headers = 'H1', 'H2', ... 

Import-Csv $inFile -Delimiter "`t" -Header $headers | Where-Object { 
    $_.H2 -eq 'chrIV' -and 
    $_.H6 -eq 'chrIV' -and 
    $_.H14 -eq 'chrIV' -and 
    $_.H16 -eq 'chrIV' 
} | Export-Csv $outFile -Delimiter "`t" -NoType 
+0

Ah ja, ich wusste, dass es ein besserer Weg, dies zu tun. Das funktioniert großartig. Vielen Dank! – Steve

+0

Wenn diese Antwort Ihr Problem gelöst hat, denken Sie bitte daran, die Antwort zu akzeptieren, indem Sie das Häkchen links neben der Antwort verwenden. –