A.l*_*zza 4 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
Run Code Online (Sandbox Code Playgroud)
这个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 =
Run Code Online (Sandbox Code Playgroud)
但我不知道如何选择主机名后的行。
Mar*_*agg 11
您可以使用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
}
Run Code Online (Sandbox Code Playgroud)
该-Context参数可用于选择匹配行之前/之后的行数。如果您提供单个数字输入,您将在前后获得该行数。通过指定两个数字,您可以指定之前的行数和之后的行数(因此在上面的示例中为 0 之前和 1 之后)。
结果返回到名为的属性中,该属性.Context具有.PostContext包含匹配后行的结果的子属性。
| 归档时间: |
|
| 查看次数: |
9059 次 |
| 最近记录: |