2016-11-10 38 views
0

後如果你有一個這樣的名單:PowerShell的進口CSV,對於每個項目,刪除字符串符號

User1.XXXX 
User2.XXXXX 
User3.XXX 

如何創建一個每個循環和週期後刪除一切?另外你如何刪除以前的所有內容?我只有基本寫的,嘗試了一些誤導的嘗試與.substring等操縱它...:

$allUsers = Import-Csv -path "c:\Folder1\All User.csv" 
$allUsers | foreach { 

} | Export-Csv -Path "c:\Folder1\Removed.csv" 

回答

2

在這種情況下,最簡單的方法是使用分割方法:

$allUsers = Get-Content somepath | foreach { 
    $_.Split('.')[0] 
} | Set-Content somepath 

[0]從Split創建的元素數組中獲取第一個元素,在您的情況下,將包含2個元素,點之前的所有內容以及點之後的所有元素。你可以在[1]之後而不是[0]之後採取一切。
另外,你不想使用Import-Csv,因爲在這種情況下,處理原始數據會更容易。

編輯:因爲我不知道你的實際CSV是什麼樣子,你可能想使用這樣的事:

$data = Import-CSV somepath 
$results = @() 
foreach ($line in $data) { 
    $line.Column_that_needs_editing = $line.Column_that_needs_editing.Split('.')[0] 
    $results += $_ 
} 

$results | Export-CSV someotherpath 
+0

你應該在第二個腳本改變'$ _'到'$ line'。如果沒有頭文件,在import-csv – LotPings

+0

處包含'-header H1,H2'謝謝,我會這麼做,但它也可以和$ _一起工作;)至於頭文件,這取決於作者,因爲我不知道他們中有多少人。 – 4c74356b41

+0

你們是天賜之寶!簡單的腳本起作用!我只有1列沒有頭atm。只是一個簡單的問題。 'foreach($ data中的$ line)中變量$ line的名稱實際上可以是任何變量名稱嗎? – DrixlRey