テキストファイルからデータを読み込み、CSVを生成する必要があります。テキストファイルのデータを8回分割して、個々の行にCSVを入力する
私は正規表現がhereをテストすることができ
$PAGE = Get-Content .\DATA.txt | ForEach-Object {
New-Object PSObject -Property @{
FIELD1 = [regex]::Matches($_, '^[^\:]*[^\.txt:]').Value
FIELD2 = [regex]::Match($_, 'DATA').Value
FIELD3 = [regex]::Match($_, 'DATA\s(.+)').Value
FIELD4 = [regex]::Match($_, 'DATA\s(\S*)\s(\S*)\s(\S*)\s(\S*)\s(\S*)\s(\S*)\s(\S*)\s(\S*)\s')
}
}
$PAGE | Select-Object FIELD1, FIELD2, FIELD3, FIELD4 |
Export-Csv DATA.csv -NoTypeInformation
データを取得するには、このPowerShellスクリプトを使用しています。サンプル入力:指定されたデータに対して上記のスクリプトの
file1.txt: DATA 46546 TEST1 EUIRWY 283746827 2 1 3 3 file2.txt: DATA 96873 TEST2 KJH-ASKDJH 928374 0 0 0 0
出力は、このように来ている:
FIELD1 | FIELD2 | FIELD3 | FIELD4 file1 | DATA | DATA 46546 TEST1 EUIRWY 283746827 2 1 3 3 | FIELD4 file2 | DATA | DATA 96873 TEST2 KJH-ASKDJH 928374 0 0 0 0 | FIELD4
しかし、意図された出力は、このです。
FIELD1 | FIELD2 | FIELD3 | FIELD4 file1 | DATA | D1 | 46546 file1 | DATA | D2 | TEST1 file1 | DATA | D3 | EUIRWY file1 | DATA | D4 | 283746827 file1 | DATA | D5 | 2 file1 | DATA | D6 | 1 file1 | DATA | D7 | 3 file1 | DATA | D8 | 3 file2 | DATA | D1 | 96873 ................................ ................................ ..............and so no 8 times
基本的にフィールド4は常にFIELD1はFIELD2があまりにも「DATA」とFIELD3は常にこのシーケンスD1に続く8回に表示されます8回ファイルの名前でなければなりません8つの文字列または数字を持っています.... D8 。 DATA.TXTファイルのすべての行について同じことを繰り返します。だからサンプルで私はfile1.txtとfile2.txtとして2行を取っている。
私はどのように進めるべきか考えることができません。私がスクリプトの中で同様のアプローチを使用したいのは、それが私の主要なスクリプトの一部であり、一貫性のために私は可能ならばこのアプローチを使いたいと思うからです。
サンプル入力してください。 –
@Ansgar Wiechersテスト文字列はすでに存在しています。[link](https://regex101.com/r/Ip9RBW/1) – n00b
あなたの質問に関連するすべてのものを入力してください。私はあなたの質問に答えることができるように他の場所に行く気がするよりも多少少ないです。 –