检查csv是否为空白字段,如果存在空白则写入输出

时间:2018-11-09 19:02:22

标签: powershell csv parsing powershell-v3.0 text-parsing

这是一个csv示例:

1- 2018-11-07,hostname-184,IP_INFO, 10.2334.40.334, 255.255.255.0, 
2 - 2018-11-07,hostname-184,IP_INFO, 334.204.334.68, 255.255.255.0,
3- 2018-11-07,hostname,7.1.79-8,IP_INFO, 142.334.89.3342, 255.255.255.0,
4- 2018-11-07,hostname,7.1.80-7,IP_INFO, 13342.221.334.87, 255.255.255.0, 
5- 2018-11-07,hostname-155,IP_INFO, 142.2334.92.212, 255.255.255.0, 
6 - 2018-11-07,hostname-184,IP_INFO, , , 1
7- 2018-11-07,hostname-184,IP_INFO, 10.19334.60.3343, 255.255.255.0, 

那么我如何检查两个空格是否为空白(如第6行)?

想法是使用这样的东西:

    $contentdnsparsed = Get-Content $destination_RAW_NAS\DNS_NAS_PARSED_0 

For($i=0;$i -lt $contentdnsparsed.count;$i++){
if($contentdnsparsed[$i] -match "running")
    {

 $Global:MatchDNS = $OK } Else {$Global:MatchDNS = $FAIL }

    }

如果在“”之后的空格4和5中匹配“某物”,则输出=确定,否则=失败。

谢谢你们

1 个答案:

答案 0 :(得分:5)

尽管您为我们提供了一个非常糟糕的CSV文件示例,但您应该使用Import-Csv cmdlet。 由于csv没有标题,因此您需要为它们提供-Header参数,如下所示:

$csvContent = Import-Csv -Path "$destination_RAW_NAS\DNS_NAS_PARSED_0" -Header @("Date","HostName", "InfoType","IPAddress","Subnet")
$csvContent | ForEach-Object {
    # test for empty IPAddress fields in the CSV
    if ([string]::IsNullOrEmpty($_.IPAddress)) {
        Write-Host "$($_.HostName) = FAIL" -ForegroundColor Red
        # somewhere in your code you have declared the variables $Global:MatchDNS, $FAIL and $OK I guess..
        $Global:MatchDNS = $FAIL
    }
    else {
        Write-Host "$($_.HostName) = OK" -ForegroundColor Green
        $Global:MatchDNS = $OK
    }
}

希望有帮助