我有一個文本檔案,它本質上是兩列 n 行。
列由雙空格分隔 - powershells import-csv cmdlet 僅允許使用單個字符分隔符。
解決這個問題的最佳方法是什么,因為我的目標是將我的第一列放入變數中。
uj5u.com熱心網友回復:
如果您當前的分隔符僅作為分隔符出現,一個簡單的方法是選擇一個新的分隔符,該字符不存在于檔案中的任何位置。如果我們選擇;,您可以執行以下操作:
$content = (Get-Content file.csv) -replace ' ',';' |
ConvertFrom-Csv -Delimiter ';'
# outputs column1 values
$content.column1
如果您不能保證您的定界符不在檔案中,您將需要限定當前文本(通常使用雙引號)以防止該字符被錯誤地指責為定界符。僅當您的資料不合格時才需要這樣做。
$content = (Get-Content file.csv) -replace '(?=")|^|$|(?<= )|(?= )','"' -replace ' ',';' |
ConvertFrom-Csv -Delimiter ';'
如果您的資料已經合格,那么您將只想替換它作為分隔符出現的雙空格。但是您需要注意作為資料出現的限定字符。
$content = (Get-Content file.csv) -replace '(?<!^|" )"(?!$| ")','""' -replace '(?<=") (?=")',';' |
ConvertFrom-Csv -Delimiter ';'
我確信可以為上述任何方法創建例外。您將需要了解您的資料并提出驗證檢查來驗證您的資料模式。
uj5u.com熱心網友回復:
AdminOfThings 的有用答案為決議所有列提供了良好的通用指標和通用解決方案。
關于:
將我的第一列放入變數中
# Create a sample file.
@'
foo ...
one two ...
more ...
'@ > sample.txt
# Extract the first column.
$col1Values = (Get-Content sample.txt) -replace ' .*$'
輸出$col1Values收益率:
foo
one two
more
注意:如果第一列的值是雙引號(并且不包含嵌入的、轉義的雙引號),則追加-replace '"'(或(...).Trim('"'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316403.html
標籤:电源外壳
上一篇:對匯入CSV的限制?
