2017-09-07 12 views
-1

誰かがPowerShellでやりたいことをどのように処理するかに関する提案があるのだろうかと思います。PowerShellでのデータ操作

私はテキストファイルにこのデータを持っている:

"0003233","9/1/2017","0241902","$12,145.05"  
"FGENERAL","MY VENDOR","VENDOR COMPANY INC.",""  
"1","Check(s)","Checks Total:","$12,145.05" 

私はそれはこのように見えるようにPowerShellを実行したい:

"0003233","9/1/2017","0241902","MY VENDOR","VENDOR COMPANY INC.","$12,145.05" 

私は単純なデータ操作の経験があるが、私は」これをどのように処理するかについては困惑しています。誰かが何かを提案できますか?

おかげ

+0

あなたがそこにそれを表示まったく同じデータが常にでしょうか? – ArcSet

+0

はい、それは常にそのように配置されています。常に同じ順序だけ異なる値。 – user3707612

+0

とファイルから直接取得していますか? – ArcSet

答えて

1

は引用符で文字列を分割するために、ファイルから正規表現と

使用を選択し、文字列を内容を取得します。

文字列配列を使用して最終出力を作成します。

$string = Get-Content "C:\Test\Test.txt" 

$StringArray = Select-String "([`"'])(?:(?=(\\?))\2.)*?\1" -input $string -AllMatches | Foreach {$_.matches.Value} 

write-output "$($StringArray[0]),$($StringArray[1]),$($StringArray[2]),$($StringArray[5]),$($StringArray[6]),$($StringArray[11])" 
+0

これは動作します。どうもありがとうございます!私はそれが私が望んでいたよりも難しいと思った。 – user3707612

+0

だから、もしこれらのファイルが一揃っていたら?ちょうど同じ3行以上。どのように私はそれらをすべて解析することができますか? – user3707612

0

あなたは、テキストファイルを読むためにGet-Contentを使用することができます。その時点で、あなたは行の配列を持っています。行の順序が同じであることが分かっている場合は、必要に応じてテキストファイル配列から新しい配列または文字列を作成することができます。

$textFile = Get-Content -Path "C:\..." #reads in the text file 
$lineOne = $textFile[0].Split(",") #splits the first line based on commma, repeat for each line 
$formattedLine = $lineOne[0] + "," $lineOne[5] #creates new string 

これにより、データを必要な形式に再構成することができます。

0
$Data = Import-Csv .\Data.txt -Header 0,1,2,3 
$Data[0]."0", $Data[0]."1", $Data[0]."2", $Data[0]."3", $Data[1]."1", $Data[1]."2", $Data[2]."3" -Join ","