删除CSV单元格中的多个条目
我有下面的csv删除CSV单元格中的多个条目,csv,powershell,Csv,Powershell,我有下面的csv Total Devices Affected Comments 5 Host1.Domain Host2.Domain Host3.Domain Host4.Domain Host5.Dom
Total Devices Affected Comments
5 Host1.Domain
Host2.Domain
Host3.Domain
Host4.Domain
Host5.Domain
4 Host1.Domain
Host2.Domain
Host3.Domain
Host4.Domain
我希望能够从每个单元格中删除条目Host2.Domain和Host3.Domain,而不删除整个单元格。我只有Windows PowerShell可供使用。这可能吗
$data = Import-Csv .\acas.csv
foreach($title in $data)
{
$totaldevices = $title."Total Devices Affected"
$comments = $title."Comments"
}
假设csv中的
Comments
字段是一个多行字符串,下面是我如何使用一个简单的for
循环来实现它:
# Define the host names we want to remove
$PendingRemoval = "Host2.Domain","Host3.Domain"
# Import the original data set
$Data = Import-Csv .\original.csv
for($i = 0; $i -lt $data.Count; $i++)
{
# Grab all hostnames from the comments field
$Comments = $Data[$i].Comments -split "`r?`n"
# Filter out unwanted ones
$Comments = $Comments |Where-Object {$_ -notin $PendingRemoval}
# Update original row
$Data[$i].Comments = $Comments -join [System.Environment]::NewLine
}
# Export it to a new csv
$Data |Export-Csv .\updated.csv
是的,这是可能的。你试过什么?换行符中的值是否有分隔符?到目前为止,我还没有尝试删除这一项。我想我可以使用for each循环来读取每一列,但我不知道我可以做什么,只删除一个条目而不删除整个单元格。我在上面用我目前拥有的东西编辑了一下。它们并没有被分隔。通常情况下,当你问这个问题的时候,人们希望你已经试过了。如果这些“注释”单元格没有分隔,那么一个单元格中的多个条目怎么可能呢?我什么都没试过,因为我想知道这是否可行,也许可以得到从哪里开始的建议。我认为这是一个如果我们有问题,我们可以互相帮助的网站。我是PowerShell的新手,我想我不太明白分隔符是什么意思。正如我前面所说,这是可能的,但您提供的数据似乎有问题。所有host.domain条目是否仅在2个单元格中?还是他们在9区。我看不出你们之间的关系。谢谢你展示一些代码。谢谢!这是可行的,但是如果我不想要一个新文档,我可以做一个
导出csv
来更新到原始csv吗?在你的例子中是原始.csv
导出csv。\original.csv-Force
现在我知道了$Comments=$Data[$I]。Comments
是什么了。。您能解释一下-split“
r吗?n”
-split
接受一个正则表达式模式,通过该模式可以将字符串拆分为多个字符串。第一部分的意思是“可能是回车”,第二部分的意思是“肯定是换行符”——这样它既适用于Windows样式的换行符(CR+LF),也适用于unix样式的换行符(LF)