Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除CSV单元格中的多个条目_Csv_Powershell - Fatal编程技术网

删除CSV单元格中的多个条目

删除CSV单元格中的多个条目,csv,powershell,Csv,Powershell,我有下面的csv Total Devices Affected Comments 5 Host1.Domain Host2.Domain Host3.Domain Host4.Domain Host5.Dom

我有下面的csv

  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)