我有下列變量然後設置內容:PowerShell的:的ConvertTo-CSV和通過對象過濾器
$input = "H:\input_file.txt"
$output = "H:\output_file.txt"
$data = Get-Content -Path $input | ConvertFrom-Csv -Delimiter '|' -Header 'Col1','Col2','Col3','Col4','Col5'
如上所示,輸入文件具有5列。這個文件有不同的記錄類型。並非所有記錄類型都定義了5列。所以,假設我有3種記錄類型 - A,B和C. A有3列,B有4列,C有5列。一個例子輸入文件的樣子:
A|x|1
B|y|2|stuff
C|z|3|stuff|other
B|y|3|other
A|z|2
我的腳本,然後使得一些列的一些修改值(除Col1中)在$數據。我想將$ data中的所有行輸出到文本文件。
如果我這樣做
$data | Select Col1,Col2,Col3,Col4,Col5 | ConvertTo-Csv -Delimiter '|' -NoTypeInformation | % {$_ -replace '"', ""} | Select-Object -Skip 1 | Set-Content -Path $output
將追加不必要的管道符錄A型和B(因爲他們有小於5列,可是我做Select Col1,Col2,Col3,Col4,Col5
)。
有沒有一種乾淨的方式來輸出$數據到一個文本文件沒有不必要的管道字符記錄類型A和B?我現在最好的猜測是對於記錄類型A,B和C有3條獨立的管道,這樣我對給定的記錄類型做了正確的選擇,然後以某種方式將它們粘在一起。