Разбиение больших файлов на части. повторяющиеся разделы; случайная длина; ключевые ценности - PullRequest
0 голосов
/ 09 мая 2020

Мне нужна помощь. У меня есть текстовый файл (468k строк), созданный системой. Я пытался разделиться, чтобы создать множество подфайлов. Все попытки терпят неудачу. попробовали циклы while, foreach, streaming, выберите, где в каждом разделе есть случайное количество строк, которые должны быть включены во вновь созданный подфайл.

$DRALIST =  Get-ChildItem -path '*_dra.txt' | Select-Object $_.FullName
foreach($file in $DRALIST){
    $filename = $file | Select-Object $_.FullName
    $DRAline1 = Get-Content -path $file | Select-Object -First 1
    $DRAline2 = Get-Content -path $file | Select-Object -Last 1
    $DRAline1 = $DRAline1 - 1
    $DRAline2 = [int]$DRAline2 + 2
    $sectionlines = Get-Content -path  '.\Sample Data\DRA\Data.dra' | Select-Object -Index ( $DRAline2..1000) 

    $newstreamreader = New-Object System.IO.StreamReader(".\Sample Data\DRA\RASTERS FOR WEIR.dra")
    $eachlinenumber = 1
    while (($readeachline =$newstreamreader.ReadLine()) -ne $null)
        {
            $LineType = $readeachline.Substring(0,4)
            if( $LineType = 'WELL') {break :DoLoop}
            Write-Host "$eachlinenumber  $readeachline"
            $readeachline | Out-File '_tmp.txt'
            $eachlinenumber++
        }
        :DoLoop do{
           Rename-Item .\_tmp.txt to $filename
        }
        until(condition)

        $newstreamreader.Dispose()

}

<div>
FILE,2.0,F,Foobar<BR>
WELL,"420030020900",,<BR>
LOG,"20030020900_2897655_00396H3054314.TIF",GR Neutron (1 inch),,50,0,1664,4950,681,11556<BR>
HEAD,0,1,681,1303,0<BR>
CURV,0,1308,681,1546<BR>
DPTH,100,0,1767<BR>
DPTH,150,0,1875<BR>
DPTH,200,0,1979<BR>
DPTH,250,0,2079<BR>
DPTH,4500,0,10622<BR>
DPTH,4550,0,10726<BR>
DPTH,4600,0,10829<BR>
DPTH,4650,0,10934<BR>
DPTH,4700,0,11037<BR>
DPTH,4750,0,11139<BR>
DPTH,4800,0,11247<BR>
DPTH,4850,0,11347<BR>
DPTH,4900,0,11451<BR>
LOG,"20030020900_2897655_00396H3054314.TIF",GR Neutron (2 1/2 inch),,4480,0,11658,4980,681,14227<BR>
HEAD,0,1,681,1303,0<BR>
DPTH,4500,0,11761<BR>
DPTH,4600,0,12272<BR>
DPTH,4650,0,12528<BR>
DPTH,4700,0,12783<BR>
DPTH,4750,0,13037<BR>
DPTH,4800,0,13302<BR>
DPTH,4850,0,13563<BR>
DPTH,4900,0,13818<BR>
DPTH,4950,0,14073<BR>
WELL,"420030074300",,<BR>
LOG,"20030074300_2886661_00006H12576905.TIF",Sample Log (1 inch),,18,0,4204,49,670,10441<BR>
HEAD,0,1,670,573,0<BR>
DPTH,20,0,4606<BR>
DPTH,21,0,4803<BR>
DPTH,23,0,5205<BR>
DPTH,24,0,5406<BR>
DPTH,25,0,5608<BR>
DPTH,27,0,6010<BR>
DPTH,29,0,6413<BR>
DPTH,30,0,6612<BR>
DPTH,31,0,6814<BR>
DPTH,32,0,7017<BR>
DPTH,33,0,7219<BR>
DPTH,35,0,7621<BR>
DPTH,37,0,8024<BR>
DPTH,39,0,8427<BR>
DPTH,40,0,8628<BR>
DPTH,41,0,8830<BR>
DPTH,42,0,9028<BR>
DPTH,44,0,9432<BR>
DPTH,46,0,9835<BR>
LOG,"20030074300_2886661_00255H12576906.TIF",GR Neutron (1 inch),,50,0,1934,4900,894,11813<BR>
HEAD,0,1,894,1568,0<BR>
CURV,0,1584,894,1839<BR>
DPTH,100,0,2036<BR>
DPTH,150,0,2139<BR>
</div><BR>
[Example data screenshot][1]<BR>
[Example data screenshot][2]
...