根据列值将一个文件拆分成多个文件
Split a file into multiple files based on column value
我想根据内容将下面的文件拆分成多个文件;
输入文件:
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
开头的行
它也不执行任何类型的异常处理。
我想根据内容将下面的文件拆分成多个文件;
输入文件:
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
它也不执行任何类型的异常处理。