[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批量分割文件

本帖最后由 dailyad 于 2020-5-6 17:45 编辑

已经解决,谢谢
~~~~~~~~~~~~~~~~~~~~~~~
需要分割一个有循环数据的文本(每个数据以pubit开始,以$$$$结尾)
新文件命名为sp0000045_id000003860156(就是<supplier> 和<id> )
新文件内容:\pubit *\M  END
请各位大神给一个思路
文件有时候比较大,有几百M的
pubit

   -5.7810   -0.0045   -1.3560 N   0  0  0  0  0  0  0  0  0  0  0  0
   -4.7344    0.4670   -0.6060 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.8212    1.6499    0.0245 N   0  0  0  0  0  0  0  0  0  0  0  0
   -3.9536    1.8938    1.0285 C   0  0  0  0  0  0  0  0  0  0  0  0


M  END
>  <supplier>
sp0000045

>  <id>
id000003860156

$$$$

本帖最后由 ivor 于 2020-5-6 08:47 编辑

powershell
目标文件1.txt
  1. $regex_loop = [regex]"pubit(.|\r\n)*?\$+"
  2. $value = $regex_loop.Matches([System.IO.File]::ReadAllText("1.txt"))
  3. $value | %{
  4. $_.Value -match "pubit(.|\r\n)*?END" | Out-Null
  5. $pubit = $Matches[0]
  6. $_.Value -match "sp\d+" | Out-Null
  7. $supplier = $Matches[0]
  8. $_.Value -match "id\d+" | Out-Null
  9. $id = $Matches[0]
  10. Write-Host $id
  11. Out-File -FilePath $supplier"_"$id -InputObject $pubit
  12. }
复制代码
3

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

多谢大神!很奇怪遇到下列情况就报错,说路径中含有非法字符。是不是一定要预处理成指定行含指定字符的格式?
pubit    -5.7810   -0.0045   -1.3560 N   0  0  0  0  0  0  0  0  0  0  0  0
   -4.7344    0.4670   -0.6060 C   0  0  0  0  0  0  0  0  0  0  0  0
   -4.8212    1.6499    0.0245 N   0  0  0  0  0  0  0  0  0  0  0  0
   -3.9536    1.8938    1.0285 C   0  0  0  0  0  0  0  0  0  0  0  0
M  END>  <supplier>sp0000045 >  <id> id000003860156
$$$$

TOP

我这测试正常
1

评分人数

#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

多谢,我又测试了一下,是可以的!

TOP

返回列表