powershell - 匹配后解析行 "something"Powershell

标签 powershell parsing

我正在尝试解析一个 .txt 文件以创建一个 .csv,问题是文件太大而且我在所有 txt 中都没有类似的字符,所以这是一个简短的例子:

Hostname:
xxx7
Network:
IPv4 Address            = xxxx
IPv4 Netmask            = xxxx
IPv4 Gateway            = xxxx
DNS Servers             = xxxx
Hostname:
xxxx-184
Network:
IPv4 Address            = xxxx
IPv4 Netmask            = xxxx
IPv4 Gateway            = xxxx
DNS Servers             = xxxx
Hostname:
xxxx-184
Network:
IPv4 Address            = xxxx
IPv4 Netmask            = xxxx
IPv4 Gateway            = xxxx
DNS Servers             = xxxx
Hostname:
xxxx-184

这个txt文件有500行。我认为,如果我能匹配一个像“主机名”这样的词,我就可以选择下一行。

就像是:
$input = Get-Content C:\xxx\VNX\Audit_script\output\IP_info_all.txt
$array = @()
$input | foreach-object {
$writeobj = $true
$obj = New-Object System.Object
If ($_ -match 'Hostname*') {
        $Hostname = 

但我不知道如何选择主机名后的行。

最佳答案

您可以使用 Select-String-Context 参数来执行此操作:

Get-Content .\IP_info_all.txt | Select-String 'Hostname' -Context 0,1 | ForEach-Object {
    $Hostname = $_.Context.PostContext

    #Do something with this.. for now we'll just print out hostname
    $Hostname
}
-Context 参数可用于选择匹配行之前/之后的行数。如果您提供单个数字输入,您将在前后获得该行数。通过指定两个数字,您可以指定之前的行数和之后的行数(因此在上面的示例中为 0 之前和 1 之后)。

结果返回到名为 .Context 的属性中,该属性具有 .PostContext 子属性,其中包含匹配后行的结果。

关于powershell - 匹配后解析行 "something"Powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407527/

相关文章:

python - 无法使用 pip 安装requirements.txt

powershell - 模块自动加载是否意味着可靠?

powershell - 您必须在 '/' 运算符的右侧提供一个值表达式

parsing - 高效地将 Foreign.Ptr Word8(或 ByteString)转换为 UArray Int Word8

arrays - PowerShell:为什么一个参数上的 [Parameter(Mandatory = $True)] 会影响另一个参数的类型转换行为?

powershell - powershell:拆分输出并在选择字符串后打印

parsing - clojure源代码在宏中的位置

javascript - 如何使用 JavaScript 正则表达式删除标签

java - 如何解决解析问题?

python - 在非常大的 HTML 文件上使用 BeautifulSoup - 内存错误?