如何使用PowerShell导入txt数据并将空行替换为null?

时间:2018-01-21 12:55:34

标签: powershell

Date          Name    Age    Location

21-FEB-2016   Ramon          Makati

22-FEB-2016           17     Quezon

23-FEB-2016   Jose    19    

从上面的不完整数据来看,需要输出如下所示。

日期,姓名,年龄,位置

21-FEB-2016,雷蒙,NULL,麦卡蒂

22-FEB-2016,NULL,17,奎松

23-FEB-2016,圣何塞,如图19所示,空

只是澄清一下。我需要得到以下结果。

日期:2016年2月22日

名称:空(空)

年龄:17

地点:奎松

2 个答案:

答案 0 :(得分:0)

您可以使用-replace来匹配包含预期字符的任何行(例如a-z,A-Z或0-9),而不是-match

(Get-Content -Path 'C:\tmp\CD.txt') -match '[a-zA-Z0-9]'

输出的输入没有空行(或没有任何行,dows不包含至少一个预期的字符)。

答案 1 :(得分:0)

您说您正在尝试导入,但您正在阅读Get-Content cmdlet使用。

你可以这样做'Null'。

$TempFile = [System.IO.Path]::GetTempFileName()
@'
Date          Name    Age    Location

21-FEB-2016   Ramon          Makati

22-FEB-2016           17     Quezon

23-FEB-2016   Jose    19   
'@ | Out-File $TempFile


ForEach ($line in (Get-Content -Path $TempFile))
{
    If ($line -eq '')
    {$line -replace $line,'Null'}
    Else{$line}
}


Results

Date          Name    Age    Location
Null
21-FEB-2016   Ramon          Makati
Null
22-FEB-2016           17     Quezon
Null
23-FEB-2016   Jose    19 

您是说要将空值作为导入的一部分吗?

为什么要在工作数据集上使用空行?

在本地,使用真正的导入cmdlet,只会删除空值

Import-Csv -Path $TempFile


Resutls

Date          Name    Age    Location
-------------------------------------
21-FEB-2016   Ramon          Makati  
22-FEB-2016           17     Quezon  
23-FEB-2016   Jose    19  

Remove-Item -Path $TempFile -Force