如果它使用Powershell脚本包含匹配INC **的字符串,则更新csv文件中的列值

问题描述

我有一种情况,如果它包含INC **号而不是整个值,我需要写替换列值

Duration    starttime       task
3 hours     24-09-2020      @{display_value=INC*****6; link=https://8888.service-8888888888888}
8 hours     23-09-2020      @{display_value=INC*****7; link=https://8888.service-888888888888888}

现在在任务栏中,我必须填写

任务 INC 6 INC 7

实际上,我通过访问serviceNow apis得到了这个csv文件,并使用powershell脚本将有效负载转换为csv文件。有人可以指导我

解决方法

当您从API作为PowerShell对象接收有效负载时,最容易编辑INC######值。

$payload.task.display_value = $payload.task.display_value -replace '\d(?=\d)','*'

如果必须使用此CSV文件(这不必要),则必须进行一些解析:

# I assumed the delimiter/separator is a tab. Change it to the appropriate character if needed.
$csv = import-csv file.csv -delimiter "`t"
foreach ($row in $csv) {
    $row.task = $row.task -replace '(?<=display_value=INC\d*)\d(?=\d)','*'
}
$csv | Export-Csv output.csv -delimiter "`t"

有关正则表达式的解释,请参见Regex