У меня есть текстовые файлы, в которых данные разделены косой чертой. Его достаточно просто импортировать и передать в пользовательский объект, но файлы имеют заголовки, содержащие разделитель. Пример ниже:
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/
В строках «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 раз. Есть ли более элегантный способ сделать это? Может быть, какое-то регулярное выражение, основанное на возврате каретки и/или косой черте?