Jump to content
Forseti2003

Textdatei zeilenweise zerlegen

Recommended Posts

Hallo in die Runde, 

 

ich hab da mal eine Frage zu einem Skript, vorab das Szenario:

 

Ich erhalte mehrere Textdateien, darin sind mehrere Datensätze die ich über zwei Werte eindeutig zu ordnen kann. 

Eines ist die Auftragsnummer ($ANR) das andere eine Art Satzbezeichnung ($STZ).

Nun würde ich einfach gerne die jeweilige Input-Datei zeilenweise auslesen und dann in eine neue Datei ausgeben.

Die neue Datei soll dabei die Auftragsnummer beinhalten und einen Zähler.

 

Nehmen wir ein Beispiel:

0200 A510158 Hauptsatz1

0300 A510158 Nebensatz1

0300 A510158 Nebensatz2

 

und so weiter - in der Datei kann es auch vorkommen, das die selbe Auftragsnummer mit der selben Satzart mehrfach vorhanden ist.

Daher ist es wichtig, das alle 0200 eine eigene Ausgabedatei bekommen und die Nebensätze der richtigen Datei zugeordnet werden.

 

Folgendes Skript habe ich dazu bisher entwickelt:

clear-host

# Deklaration Variablen
$Eingang = "e:\powershell\Eingang\"
$Ausgang = "e:\Powershell\Ausgang\"

$datei = gci $Eingang

foreach ($a in $datei){
get-content $a.FullName | foreach-object {$_

# Variablen
$STZ = $_.Substring(0,4)
$ANR = $_.Substring(9,12)
$i = 1
$ausgabefile = $ANR +'_'+ $i + '.txt'

if ($STZ -eq '0200')
{
do {
if (Test-Path $ausgang$ausgabefile)
    {
    $i = $i +1
    $ausgabefile = $ANR +'_'+ $i + '.txt'
    $ausgabe = $ausgabefile
    }
else
    {$_ | out-file -filepath $ausgang$ausgabefile -append
    }
}

while ( Test-Path $ausgang$ausgabefile)

$_ | out-file -filepath $ausgang$ausgabefile -append
}
else
    {$_ | out-file -filepath $ausgang$ausgabe -append}
}
}

Leider ist das Ergebnis nicht 100% das was ich gerne hätte. Mit einer Testdatei im Eingang erhalte ich dann einen Ausgang:

A510158_1.txt

A510158_2.txt

A510158_3.txt

 

Wobei in der Datei 1 nur 1x die Zeile 0200 enthalten ist, die restlichen zwei Dateien dagegen sind korrekt. Ich weiss also nicht, warum er die Datei 1 überhaupt so erzeugt und wieso er dann im späteren Verlauf die Dateien richtig aufbaut.

Hat jemand eine Idee, was ich dabei übersehe?

 

Gruß

Forseti

 

-Update: Hat sich gerade erledigt, hab den Fehler gefunden ;-) - den Zähler auf 0 gesetzt und die Variable $i und $ausgabefile vor das DO gesetzt, jetzt macht er das was ich will.

Edited by Forseti2003

Share this post


Link to post
Share on other sites

Ich habe Deine Logik nicht ganz verstanden, aber hier einfach ein paar generelle Hinweise. Wenn Deine Daten quasi CSV-Daten sind, machst Du Dir das Leben einfacher, wenn Du sie auch so behandelst. ;-)

$SourceData = @'
0200 A510158 Hauptsatz1
0300 A510158 Nebensatz1
0300 A510158 Nebensatz2
'@ |
    ConvertFrom-Csv -Header STZ,Index,Auftrag -Delimiter ' '
$SourceData

$SourceData | Group-Object -Property STZ

$SourceData | Group-Object -Property Auftrag

Ich hab jetzt einfach mal das Leerzeichen als Trenner angenommen. Wenn die Daten als "Tabelle" vorliegen, dann hast Du mit Powershell vielfältige Möglichkeiten mit den Daten zu "jonglieren". Hier oben z.B. hab ich die Daten einfach mal nach verschiedenen Attributen gruppiert ...

 

Fragen? Fragen!  ;-):D

  • Thanks 1

Share this post


Link to post
Share on other sites
vor 2 Minuten schrieb Forseti2003:

Aber nach der letzten Anpassung klappt das mit dem Skript.

Super. :thumb1:

 

vor 2 Minuten schrieb Forseti2003:

Wie kann ich eigentlich den Thread als gelöst markieren?

Das weiß ich tatsächlich nicht, ich hatte hier noch nie eine Frage gestellt und konnte noch nie eine Antwort entsprechend markieren. Aber ich vermute es dürfte nciht zu versteckt sein ... such ma.  ;-)

Edited by BOfH_666

Share this post


Link to post
Share on other sites
vor 18 Minuten schrieb Forseti2003:

 Wie kann ich eigentlich den Thread als gelöst markieren?

Bei einem Thread, den du selber eröffnet hast, ist ein Feld mit Haken links neben den Namen / Beiträgen, so kannst du den Hilfreichsten markieren :-)

Edited by Nobbyaushb

Share this post


Link to post
Share on other sites
vor 8 Stunden schrieb BOfH_666:

Das weiß ich tatsächlich nicht, ich hatte hier noch nie eine Frage gestellt und konnte noch nie eine Antwort entsprechend markieren.

Frag doch mal was, dann antworte ich Dir und Du kannst selbst forschen ;-):engel:

Share this post


Link to post
Share on other sites
vor 4 Stunden schrieb daabm:

Frag doch mal was, dann antworte ich Dir und Du kannst selbst forschen ;-):engel:

Du bist immer so fürsorglich/mütterlich zu mir. Danke.  ;-) :D :thumb1: :give5::rocknroll::applaus: Aber das ist mir tatsächlich nicht soo wichtig ... und ich weiß es ja jetzt dank Nobby auch.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...