找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29702|回复: 6

[文本处理] 【已解决】批处理读取文本指定内容行如何不受文本中NUL(\x00)控制字符的影响?

[复制链接]
发表于 2016-6-23 21:03:26 | 显示全部楼层 |阅读模式
因为工作原因,使用的某一软件生成的计算结果中出现了空位NUL字符(\x00),而我想写一个batch脚本将其中关心的内容挑选出来,无奈尝试过网上无数脚本,每一个都是遇到空位字符即认为文本结束,没有一个能将我想提取的内容提取出来。大牛们有没有好的解决方案?

文本样例截图展示

这里有想读取的样例文本

经测试,网上的脚本读到第5行即退出。后面的许多结果根本读不出来(这里是我自己仿制的样例,实际文本1000+行)

我想筛选的结果大概是(以样例为例):
如果质子数(PROTON)是1,我只需要中子数(NEUTRON)为1和2,也就是氢和氘,两个核素的含量(CONTENT);如质子数是3,我只关心中子数为3的锂同位素的含量。诸如此类。

评分

参与人数 1PB -3 收起 理由
pcl_test -3 未按版规发帖

查看全部评分

发表于 2016-6-23 21:38:25 | 显示全部楼层
sed.exe
  1. sed -r "s/\x00//g" product.txt > a.txt
复制代码
  1. PowerShell -c "(type product.txt) -replace '\x00'| Out-File a.txt -Encoding ascii"
复制代码

评分

参与人数 1技术 +1 收起 理由
imhere + 1 感谢。

查看全部评分

 楼主| 发表于 2016-6-23 22:27:25 | 显示全部楼层
本帖最后由 pcl_test 于 2016-6-24 00:41 编辑

回复 2# WHY

大侠,你太帅了!多谢!
发表于 2016-6-24 00:32:16 | 显示全部楼层
more product.dat>new_product.dat
findstr . new_product.dat&pause
发表于 2016-6-24 00:41:06 | 显示全部楼层
findstr /r /c:"^ *1 *1 *" /c:"^ *1 *2 *" /c:"^ *3 *3 *" product.dat&pause
 楼主| 发表于 2016-6-24 00:59:36 | 显示全部楼层
本帖最后由 pcl_test 于 2016-6-24 12:41 编辑

回复 5# pcl_test
非常感谢,但是新生成的文件有空行,空行数目==NUL占位符数目,如果能去掉空行就完美了。
不过,现在已经可以进一步检索需要的信息了。
 楼主| 发表于 2016-6-24 01:02:41 | 显示全部楼层
回复 5# pcl_test

对了,版主,我是新人,这是第二贴(报到贴是第一个),哪里做错了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 08:56 , Processed in 0.019906 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表