在PowerShell中解析文本文件

我有一个包含多个用户的文本文件(格式正确):

用户名:t-Hancock

电话号码:555555555

用户名:a-smith

电话号码:987654321

用户名:r-Byer

电话号码:123456789

我正在尝试将所有这些用户放入具有两个属性(名称和电话号码)的对象中。我尝试了Get-Content,还尝试了其他文章中的一些正则表达式,但是由于不了解,所以无法对其进行修改。

怎么办呢?

格雷厄姆·戈尔德(Graham Gold)

目前尚不清楚您想要什么-什么样的对象和目的?

我将举例说明您可以做什么...

假设您要将文本文件转换为CSV文件以便于轻松导入Excel,请先阅读文件内容:

$input = Get-Content C:\TextFile.txt

现在,创建一个数组,您将在其中存储创建的每个对象:

$array = @()

现在,我们将进入一个循环,分析文件内容。如果该行以“用户名”开头,则使用冒号作为分隔符来拆分该行,将第二个项目(相对于0,所以第二个项目为第一)放入变量中。

如果该行以“ PhoneNumber”开头,则将$writeobj变量设置为true(在循环的每次迭代开始时重置为false),并$PhoneNumber再次使用split存储“ PhoneNumber”值

然后检查是否$writeobj为true,如果是,则创建一个新对象,添加一个NoteProperty,其名称为Username,并从文件的上一行存储用户名值。

然后添加一个名称为PhoneNumber且值为的NoteProperty $PhoneNumber然后,将对象添加到数组。

这一直重复整个文件内容:

$input | foreach-object {
    $writeobj = $false
    $obj = New-Object System.Object
    If ($_ -match 'username*') {
        $Username = ($_ -split ':')[1]
    }
    If ($_ -match 'PhoneNumber*') {
        $PhoneNumber = ($_ -split ':')[1]
        $writeobj = $true
    }
    If ($writeobj){
        $obj | Add-Member -type NoteProperty -name Username -value $Username
        $obj | Add-Member -type NoteProperty -name PhoneNumber -value $PhoneNumber
        $array += $obj
    }
}

一旦脱离循环,将数组导出到CSV文件:

$array | Export-Csv -path C:\test.csv -NoTypeInformation

因此,完整的脚本是:

$input = Get-Content C:\TextFile.txt
$array = @()
$input | foreach-object {
    $writeobj = $false
    $obj = New-Object System.Object
    If ($_ -match 'username*') {
        $Username = ($_ -split ':')[1]
    }
    If ($_ -match 'PhoneNumber*') {
        $PhoneNumber = ($_ -split ':')[1]
        $writeobj = $true
    }
    If ($writeobj){
        $obj | Add-Member -type NoteProperty -name Username -value $Username
        $obj | Add-Member -type NoteProperty -name PhoneNumber -value $PhoneNumber
        $array += $obj
    }
}
$array | Export-Csv -path C:\test.csv -NoTypeInformation

请参见下面在Excel中打开的CSV文件的屏幕截图。

在Excel中打开示例CSV文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell解析文本文件

来自分类Dev

在Julia中解析文本文件

来自分类Dev

解析文本文件中的值

来自分类Dev

解析文本文件

来自分类Dev

使用Powershell解析和替换不规则多行文本文件中的值

来自分类Dev

使用Python解析文本文件中的文本块

来自分类Dev

PowerShell Search在文本文件中查找文件

来自分类Dev

在Perl中解析结构化文本文件

来自分类Dev

从Android中的文本文件解析单行值

来自分类Dev

需要帮助来解析Perl中的文本文件

来自分类Dev

在Haskell中解析可打印文本文件

来自分类Dev

在python中解析结构化文本文件

来自分类Dev

从文本文件中解析出必要的部分

来自分类Dev

python解析文本文件中的条件多行

来自分类Dev

将Python中的文本文件解析为字典

来自分类Dev

如何在PHP中解析常规文本文件

来自分类Dev

在shell脚本中解析文本文件

来自分类Dev

解析文本文件并将其存储在列表中

来自分类Dev

如何解析文本文件中的日期?

来自分类Dev

如何在C#中解析文本文件?

来自分类Dev

在Scala中解析分隔的文本文件

来自分类Dev

在 R 中解析包含多个部分的文本文件

来自分类Dev

C 解析文本文件中的注释

来自分类Dev

將文本文件中的行解析為向量

来自分类Dev

在PowerShell中检查文本文件内容

来自分类Dev

Powershell脚本更改文本文件中的列位置

来自分类Dev

在Powershell中难以从文本文件中提取响应

来自分类Dev

如何从Powershell中的文本文件删除行?

来自分类Dev

使用Powershell替换文本文件中的路径