【发布时间】:2017-08-22 18:59:20
【问题描述】:
我有文本文件,其中数据由正斜杠分隔。将其导入自定义对象并提供给自定义对象很容易,但文件的标题包含分隔符。示例如下:
标题行 1/INFO/MOREINFO 标题行 2/INFO/MOREINFO 标题行 3/INFO/MOREINFO 标题行 4/INFO/MOREINFO 标题行 5/INFO/MOREINFO 标题行 6/INFO/MOREINFO 标题 7/INFO/MOREINFO LINE1A/1B///1E/1F/1G/1H LINE2A/2B/2C//2E//2G/2H ... /结尾/“LINE1A”、“LINE1B”等行有我需要导入的数据。使用 -split '/' 可以让我将所有内容拆分为一个不错的数组,但前提是该标题不存在。
$data = (Get-Content text.txt).Replace('Line', '/Line') -split('/')
如果存在标头,$data 数组中的第一个元素包括标头。
我尝试过字符串操作技巧,但不幸的是,标题文本从一个文件到下一个文件不一致。行数(始终为 7)和斜线数(每个标题行 2 个)是一致的,但每行中的文本各不相同。
由于Get-Content 将数组拆分为回车(如果我错了,请纠正我),我虽然可以删除前 7 个数组元素。此代码用于删除第一个元素:
$data = (Get-Content text.txt)
$data = $data | Where-Object {$_ -ne $data[0]}
但它的可扩展性不是很好。我不想循环命令 7 次。有没有更优雅的方法来做到这一点?也许一些基于回车和/或斜杠的正则表达式?
【问题讨论】:
标签: powershell text csv