Board logo

标题: [文本处理] [已解决]批量分割文件 [打印本页]

作者: dailyad    时间: 2020-5-6 00:35     标题: [已解决]批量分割文件

本帖最后由 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:16

本帖最后由 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. }
复制代码

作者: dailyad    时间: 2020-5-6 17:49

多谢大神!很奇怪遇到下列情况就报错,说路径中含有非法字符。是不是一定要预处理成指定行含指定字符的格式?
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 20:18

我这测试正常
作者: dailyad    时间: 2020-5-6 21:01

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2