我有一些文本文件,其中的数据由正斜杠分隔。将其导入并将其输入到自定义对象中非常容易,但是文件具有包含定界符的 header 。下面的例子:
HEADER LINE 1/INFO/MOREINFO HEADER LINE 2/INFO/MOREINFO HEADER LINE 3/INFO/MOREINFO HEADER LINE 4/INFO/MOREINFO HEADER LINE 5/INFO/MOREINFO HEADER LINE 6/INFO/MOREINFO HEADER LINE 7/INFO/MOREINFO LINE1A/1B///1E/1F/1G/1H LINE2A/2B/2C//2E//2G/2H ... /END/
The lines "LINE1A", "LINE1B", etc. have the data I need to import. Using -split '/'
lets me split everything into a nice array, but only if that header's not there.
$data = (Get-Content text.txt).Replace('Line', '/Line') -split('/')
如果存在 header ,则
$data
数组中的第一个元素包括 header 。我尝试了字符串操作技巧,但是不幸的是,标题文本从一个文件到下一个文件并不一致。行数(总是7)和斜杠数(每标题行2)是一致的,但是每行中的文本都不同。
由于
Get-Content
产生的数组拆分为回车符(如果我错了,请纠正我),尽管我可以删除前7个数组元素。此代码可删除第一个元素:$data = (Get-Content text.txt)
$data = $data | Where-Object {$_ -ne $data[0]}
但这不是很可扩展。我不想循环命令7次。有没有更优雅的方法可以做到这一点?也许一些基于回车和/或斜杠的正则表达式?
最佳答案
简单的内容,请使用Select-Object
cmdlet跳过前7行!
$data = (Get-Content text.txt | Select -Skip 7).replace('Line','/Line') -split('/')
如果第8行上有空白行,您可能要跳过前8行。
关于powershell - 从分隔的文本文件中删除标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825065/