Powershell:使用字符串匹配条件将单个文件拆分为多个文件

2024-01-02

我有一个包含 1GB 数据的文件。该数据实际上是数十个或数千个单独的迷你文件。 我需要提取每个单独的文件并将它们放入自己单独的不同文件中。 所以本质上,我需要从单个文件变成 30K+ 单独的文件。

这是“我的文件”的示例。

文件名 1 版本 1 32 D
87年10月15日 87年9月29日
编制 ?????
修订者:???
描述 用户域
记录文件名 1 版本 1 D 后缀 -4541
100 05 ST-CTY-CDE-FMHA-4541 显示器
200 10 ST-CDE-FMHA-4541 9(2) 显示
300 10 CTY-CDE-FMHA-4541 9(3) 显示器
400 05 NME-CTY-4541 X(20) 显示器
500 05 最后更新日期 4541 9(06) 显示
600 05 FILLER X 显示 1 报告编号08
数据字典报告器 REL 17.0 09/23/21
第 2 页 报告 008
记录报告

-**************************************************** ****************************************************** ********************************** 记录 记录 ---- 日期 ----
记录名称长度构建器类型 事件已更新已创建
****************************************************** ****************************************************** ********************************** 0
文件名2 版本 1 176 D
98年3月9日 84年2月21日
编制 ??????
修订者:????
定义

我需要根据位置 68、69 和 70 中 VER 的匹配来拆分文件。我还需要为每个文件唯一命名。该信息存储在同一行的位置 2-9 中。在上面的示例中,该字符串是“FILENAM1”和 FILENAM2”。

因此,仅使用上面的示例,我将创建两个输出文件,它们将被命名为 FILENAM1.txt 和 FILENAM2.txt。

由于我需要拆分超过 30K 个文件,因此手动执行此操作是不可能的。

我确实有一个脚本可以将一个文件拆分为多个文件,但它不会按位置搜索字符串。

有人能帮助我吗?

这是不起作用的脚本。希望我能屠宰它并得到一些有效的结果......

$InputFile = "C:\COPIES.txt"
$Reader = New-Object System.IO.StreamReader($InputFile)
$OPName = @()
While (($Line = $Reader.ReadLine()) -ne $null) {
    If ($Line -match "VER"(67,3)) {
        $OPName = $Line.(2,8)
        $FileName = $OPName[1].Trim()
        Write-Host "Found ... $FileName" -foregroundcolor green
        $OutputFile = "$FileName.txt"
    }    
    Add-Content $OutputFile $Line
}
                        

先感谢您,

-Ron


我建议使用switch https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Switch语句,它通过以下方式提供方便快捷的逐行读取文件-File and regex https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Regular_Expressions- 匹配通过-Regex:

$streamWriter = $null
switch -CaseSensitive -Regex -File "C:\COPIES.txt" {
  '^.(.{8}).{58}VER' { # Start of a new embedded file.
    if ($streamWriter) { $streamWriter.Close() } # Close previous output file.
    # Create a new output file.
    $fileName = $Matches[1].Trim() + '.txt'
    $streamWriter = [System.IO.StreamWriter] (Join-Path $PWD.ProviderPath $fileName)
    $streamWriter.WriteLine($_)
  }
  default { # Write subsequent lines to the same file.
    if ($streamWriter) { $streamWriter.WriteLine($_) }
  }
}
$streamWriter.Close()

Note: A solution using the .Substring() method of the [string] type is possible too, but would be more verbose.

  • The ^.(.{8}).{58}正则表达式的部分匹配每行的前 67 个字符,同时通过捕获组捕获(基于 1)第 2 至 9 列(文件名)中的字符(.{8}),这使得捕获的文本在索引中可用[1] of the 自动的$Matches多变的 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Automatic_Variables#matches. The VER然后,正则表达式的一部分确保该行仅在以下情况下匹配VER位于列位置 68 处。

  • 为了高效创建输出文件,[System.IO.StreamWriter] https://learn.microsoft.com/en-US/dotnet/api/System.IO.StreamWriter使用实例,比逐行快得多Add-Content来电。此外,与Add-Content您必须确保目标文件尚不存在,因为现有内容将被附加到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell:使用字符串匹配条件将单个文件拆分为多个文件 的相关文章

  • 如何限制firebase中的字符串长度

    我在 firebase 数据库中工作 我需要限制字符串字段的长度 我怎么做 到该字段的路径是 Col1 doc1 描述 也就是说 从集合 col1 开始 然后进入 doc1 然后对于 doc1 下的所有集合以及该集合下的所有文档 描述字段需
  • 使用 Java 将摩尔斯电码转换为英文文本

    我最近有一项任务 将英语转换为摩尔斯电码 并将摩尔斯电码转换为英语 输入莫尔斯电码时 我的老师希望各个字母之间用 1 个空格分隔 单词之间用 分隔 例如 是 成为 我能够完美地将英语转换为莫尔斯电码 但我对莫尔斯电码转换为英语感到不知所措
  • 生成逗号分隔值

    假设我有一个字符串集合 foo bar xyz 我想从列表中生成一个逗号分隔的值 如下所示 foo bar xyz 请注意末尾缺少 我知道有多种方法可以生成此内容 使用 for 循环和 string Format 或 StringBuild
  • 在powershell中,使用export-csv cmdlet,我的整数被引号封装,知道为什么吗?

    所以我运行一个sql查询 通过管道传输到export csv 唯一的问题是所有值都用引号封装 包括整数 这对我来说不可能作为整数重新导入到SQL中 有什么想法吗 CSV 没有类型的概念 它是纯粹基于字符串的格式 PowerShell 只引用
  • 如何在EditText中显示格式化文本?

    现在我正在编写简单的笔记应用程序 我需要在 EditText 中显示格式化的单独选定文本 I tried EditText et EditText findViewById R id edittext String string int s
  • 在 VBA Excel 中查找、剪切和插入行以匹配借项和贷项值

    我在 Sheet1 中有以下设置数据 并从第 4 行 A 列开始 其中标题位于第 3 行 No Date Code Name Remarks D e b i t Cr e d i t 1 4 30 2015 004 AB 01 04 15
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • C 中的指针、数组、字符串和 Malloc

    我目前正在学习 C 语言中的字符串 指针和数组 我尝试编写一个程序 其中数组保存三个指向字符串地址的指针 这一切似乎都有效 但程序的行为很奇怪 这是代码 char getUserDetails char host localhost cha
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • 远程计算机上的活动登录用户

    我正在使用下面的脚本来获取远程计算机上的登录用户 它工作正常 但我需要让用户处于 活动 状态 如何获取远程计算机上的活动登录用户 function Global Get LoggedOnUser Requires Version 2 0 C
  • PLSql 返回值

    我再次使用一些 PLSql 我想知道 是否有任何方法可以像选择一样使用以下函数 而不必将其转换为函数或过程 这样我就可以从包含它的脚本中看到代码 代码如下 DECLARE outpt VARCHAR2 1000 flow rI VARCHA
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • Javascript:删除字符串标点符号并拆分成单词?

    抱歉 如果之前有人问过这个问题 但我正在尝试从这样的字符串中获取单词数组 Exclamation Question Quotes Apostrophe Wasn t Couldn t Didn t 该数组应该看起来像这样 exclamati
  • 执行 Boyer-Moore 模式匹配时是否必须考虑编码?

    我即将实现 Boyer Moore 模式匹配算法的变体 具体来说是星期日算法 我问自己 我的字母表大小是多少 它是否取决于编码 可能的字符数 或者我可以假设我的字母表由 256 个符号组成 一个字节可以表示的符号数 在许多其他情况下 将字符
  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • PowerShell:函数没有正确的返回值

    我编写了一个 powershell 脚本来比较两个文件夹的内容 Dir1 d TEMP Dir1 Dir2 d TEMP Dir2 function Test Diff Dir1 Dir2 fileList1 Get ChildItem D
  • 如何展平解析树并存储在字符串中以进行进一步的字符串操作 python nltk

    我正在尝试从树结构中获取扁平树 如下所示 我想将整个树放在一个字符串中 就像没有检测到坏树错误一样 S NP SBJ NP DT The JJ high JJ seven day PP IN of NP DT the CD 400 NNS

随机推荐

  • 找出堆内存损坏的位置

    我知道已经有很多类似的问题和答案存在 但我无法解决我的问题 在我的大型应用程序堆中 某处已损坏 我无法找到它 我也使用过像 gflags 这样的工具 但没有运气 我在以下示例上尝试了 gflags 该示例故意损坏了堆 char pBuffe
  • C# - 匿名委托

    就像匿名方法一样 我使用 delegate 关键字声明的委托是匿名委托吗 namespace Test public delegate void MyDelegate class Program static void Main strin
  • Xcode 错误“无法安装应用程序...[appname].app 需要 [devicename] 不支持的“z”功能

    我正在编写 Wenderlich 教程 今天收到一条新错误消息 我还没有看过这个 并且似乎无法通过常规搜索找到任何答案 当尝试在设备 运行 9 1 的 iPhone 6 iPhone 5 或 iPad Mini 上构建和运行时 我收到以下错
  • PIL:DLL加载失败:找不到指定的过程

    我已经开始使用 Python 处理图像 并且想开始使用 PIL Pillow 为了安装它 我跑了pip install Pillow 安装时 之前没有安装PIL 我还尝试卸载并重新安装它 以及使用pip3 install Pillow 当我
  • 为什么cygwin下的git要求输入密码?

    我正确指向 ssh 配置中的密钥文件 cat ssh config Host
  • PHP - 复选框组

    我有一个需要发布的表单中的复选框组
  • 找不到 PHP 二进制文件

    每次我保存我的 phpSublime 中的文件会弹出 在 php bin usr local bin php 处找不到 PHP 二进制文件 我已经做了我所知道的一切 到目前为止我正在研究答案 对我来说 是 phpfmt 扩展找不到 php
  • 如何使用 Mono.Cecil 注入对 System.Object.Equals 的调用?

    使用 Mono Cecil 我想重写以下属性 public string FirstName get return FirstName set FirstName value to this public string FirstName
  • 将 C# 枚举定义序列化为 Json

    在 C 中给出以下内容 Flags public enum MyFlags None 0 First 1 lt lt 0 Second 1 lt lt 1 Third 1 lt lt 2 Fourth 1 lt lt 3 有没有现成的方法S
  • 如何以 OOP 风格使用 TensorFlow?

    具体来说 当使用 TensorFlow 以 OOP 风格构建模型时 我应该在哪里构建图 我应该在哪里启动会话来运行图表 此案例的最佳实践是什么 In TensorFlow 力学 101 https www tensorflow org tu
  • ES6 fetch 函数返回未定义[重复]

    这个问题在这里已经有答案了 我有以下代码 function fetchDemo var result fetch countriesUrl then function response return response json then f
  • 画布未在reactjs中渲染

    我想在我正在开发的网站上添加画布 但我似乎可以理解为什么画布没有显示 可能是什么问题 以下是我尝试过的 当我将鼠标悬停在标题上时 它显示画布正在更新 但屏幕上没有显示任何内容 画布 jsx export class Canvas exten
  • 在 R 中按模式重命名列

    我想按特定模式重命名数据框中的所有列 我的输入 Log NE122 Log NE244 Log NE144 0 33 0 98 1 0 我的预期输出 NE122 NE244 NE144 0 33 0 98 1 0 Cheers 您可以使用正
  • 在 Visual Studio 中开发 Azure Function 时存储帐户无效

    我正在使用 C 在 Visual Studio 中开发 Azure Function 我在位于代理后面的开发机器上本地运行它 但是不断收到此错误 Exception binding parameter Invalid storage acc
  • 打字稿路径无法解析

    Here https github com oleersoy typescript pathsGithub MCVE 显示了一个问题 npm run compile显示错误 我正在尝试这样做 import Todo from test 但这
  • 检测用户是否在颤动上按下 home / tab 的代码?

    是否有任何代码可以检测用户是否按下了 home tab 我想让我的音乐在按下时暂停 通过添加观察者来跟踪生命周期事件WidgetsBinding然后在应用程序暂停时暂停音乐 你可以看看this https github com flutte
  • 核心数据executeFetchRequest抛出NSGenericException(枚举时集合发生了变化)

    我正在使用 Core Data 开发 iPhone 应用程序 所有用户数据应与我们的服务器同步 为此 我创建了 NSOperation 的子类 它从我们的 Web 服务加载新数据并创建相应的托管对象 为了维护它们之间的关系 每个对象都使用远
  • 哪个是最好的 git 托管软件? - Gitolite vs. Gitlab vs. Gitorius [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在寻找适合多个用户的 git 托管环境 因此我搜索了之间的比较Gitolite Gitlab and Gitorius 但我没有得到任何有用
  • YAML:YAML 中的字符串需要引号吗?

    我正在尝试编写一个用于 Rails 项目国际化的 YAML 字典 不过我有点困惑 因为在某些文件中我看到字符串用双引号引起来 而在某些文件中则没有 需要考虑的几点 示例1 https github com plataformatec dev
  • Powershell:使用字符串匹配条件将单个文件拆分为多个文件

    我有一个包含 1GB 数据的文件 该数据实际上是数十个或数千个单独的迷你文件 我需要提取每个单独的文件并将它们放入自己单独的不同文件中 所以本质上 我需要从单个文件变成 30K 单独的文件 这是 我的文件 的示例 文件名 1 版本 1 32