在CSV中找到匹配项时如何在单元格中插入值

时间:2018-12-07 17:26:57

标签: regex powershell csv filestream

我希望在现有CSV的开头添加两列,这些列将用于存储在该行和行号上找到的所有匹配项。我的搜索工作正常,可以找到匹配项,只是不确定如何将找到的值插入/附加到现有(或新创建的)电子表格中。

我的第一个问题是,当我添加名为“ ICHit”和“ Line”的2个新列时,它将删除我的整个CSV。我也不知道从哪里开始将值附加到CSV中匹配的行上。

在此先感谢您的帮助!

数据结构

COLUMNS = ICHit,Line,UserName,EmailAddress,Code

CellValues = MATCHGOESHERE,LINENUMBERHERE,Bob,Bob@gmail.com,12345


$date = Get-Date -UFormat "%Y-%m-%d"
$OutPutFileName = "SearchResults" + $date + ".csv"
$CSV= "U:\Found\$OutPutFileName"
$RXSearchList = "12345,bob@gmail.com"
$filetosearch = "\\server\SpreadsheetToSearch.csv"


Import-Csv $filetosearch |  #add new columns
Select-Object *,@{Name='column0';Expression={'setvalue'}} | 
Export-Csv $filetosearch -NoTypeInformation


$File2 = new-object System.IO.StreamWriter($CSV,$true) #Append or Create a new file Stream. 
$File2.WriteLine('ICHit,Line') # New Columns to add

$file = New-Object System.IO.StreamReader ($filetosearch)  # Input Stream
    while (($text = $file.ReadLine()) -ne $null ){
        foreach ($RX in $Global:RXSearchList){
            foreach ($match in ([regex]$RX).Matches($text)) {

                    $Global:File2.WriteLine("{0},{1}",$match.value,$text)  
            }
         }
        }
            $file.close();  
            $Global:File2.close() #file2

0 个答案:

没有答案