2016-03-24 15 views
2
ile değiştirin

Bir csv'den geçmeye çalışıyorum ve Enabled isimli bir sütundaki tüm değerleri True'dan A'a değiştirin.Sütun değerlerini Powershell

Import-Csv .\test.csv | Where-Object {$_.Enabled -eq 'True'} --> what goes here to replace 'True' with 'A'? 

cevap

3

Where-Object bir filtre gibi davranır, bu nedenle sadeceEnabledTrue olduğunu olanlar olacak boru hattının geri kalan kısmına geçmiş olsun kolonlar; Diğerleri sizin çıkış dosyasına dahil etmenizi engeller (sonunda tam bir dosyaya sahip olmak istediğinizi varsayardım).

yüzden (değiştirilmiş ya da değil) ForEach-Object kullanarak ve sonra orada içeride bir koşulu temel değiştirerek, ama yine de içinden her objeyi geçen öneriyoruz:

Import-Csv .\test.csv | ForEach-Object { 
    if ($_.Enabled -eq 'True') { 
     $_.Enabled = 'A' 
    } 
    $_ 
} | Export-Csv .\test-modified.csv -NoTypeInformation 
+0

Tam olarak ne arıyordum. PS ile biraz paslı, bu yüzden teşekkür ederim! – Paul

0

Briantist cevabı gayet güzel çalışıyor. Gerçekten bununla delirmek istiyorsan, bir Excel comobject oluşturabilirsin, çalışma kitabını/sayfayı seçebilirsin, sonra "etkin" tüm sütunu seç, boş hücreleri/sütun başlığını sil, sonra da döngü yap ve aslında aynı şeyi yap briantist, bu şekilde koşullu biçimlendirme eklemek gibi şeyler yapabilmenize rağmen, sadece ne yapmaya çalıştığınıza bağlı olduğunu belirtti.

+1

Gerçekten çıldırmak istiyorsak, [Doug Finke] (http://stackoverflow.com/users/110865/doug-finke) 'nin [Excel modülü] (https://github.com/dfinke)/ImportExcel) COM nesnesini kullanmaktan daha iyi (ve excel'in yüklenmesini gerektirmez)! – briantist

İlgili konular