Я хочу разделить приведенный ниже файл на несколько файлов в зависимости от содержимого;
Входной файл:
HC05361 3036690000002020072814093990 R
DC05361 00100001CD 03113 075992733625
HC05362 3036690000002020072814103991 R
DC05362 00100001CD 03113 075992733625
HC05615 3024173024172020091408223795 R
DC05615 00100001NDL 00016 856115004682
DC05615 002000011 295013 825646252404
DC05615 003000011 295617 825646248490
Выходные файлы:
Файл1:
HC05361 3036690000002020072814093990 R
DC05361 00100001CD 03113 075992733625
Файл2:
HC05362 3036690000002020072814103991 R
DC05362 00100001CD 03113 075992733625
Файл3:
HC05615 3024173024172020091408223795 R
DC05615 00100001NDL 00016 856115004682
DC05615 002000011 295013 825646252404
DC05615 003000011 295617 825646248490
Это работает для меня, но я думаю, что вам может потребоваться предоставить дополнительную информацию.
Нравиться...
HC
? Всегда ли значения в первом столбце будут в форме HC#####
?Сделав несколько предположений, это базовый пример того, что вы могли бы сделать.
Это будет перебирать каждую строку в файле. Если строка начинается с HC#####
, то она выводит эту строку и каждую последующую строку в файл с таким именем. Когда он достигает нового значения HC#####
, он меняет его на имя файла:
$data = Get-Content .\sample.txt
foreach ($line in $data) {
if ($line -match '^HC[0-9]+') {
$fileName = "$($Matches[0]).txt"
}
Add-Content -Value $line -Path $fileName
}
Это предполагает, что первая строка всегда будет предоставлять нам имя файла.
Также предполагается, что вы хотите разделить строки, начинающиеся с HC
Он также не выполняет никакой обработки исключений.
также у меня не будет статического имени входного файла, поэтому это может быть один или несколько больших файлов. Хотите сохранить этот файл в выходной папке.
Спасибо, Чад за быстрый ответ, да, я хочу разбить на основе HC, и имя файла должно быть HC#####.