Board logo

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

作者: imhere    时间: 2016-6-23 21:03     标题: 【已解决】批处理读取文本指定内容行如何不受文本中NUL(\x00)控制字符的影响?

因为工作原因,使用的某一软件生成的计算结果中出现了空位NUL字符(\x00),而我想写一个batch脚本将其中关心的内容挑选出来,无奈尝试过网上无数脚本,每一个都是遇到空位字符即认为文本结束,没有一个能将我想提取的内容提取出来。大牛们有没有好的解决方案?

文本样例截图展示

这里有想读取的样例文本

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

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

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"
复制代码

作者: imhere    时间: 2016-6-23 22:27

本帖最后由 pcl_test 于 2016-6-24 00:41 编辑

回复 2# WHY

大侠,你太帅了!多谢!
作者: pcl_test    时间: 2016-6-24 00:32

more product.dat>new_product.dat
findstr . new_product.dat&pause
作者: pcl_test    时间: 2016-6-24 00:41

findstr /r /c:"^ *1 *1 *" /c:"^ *1 *2 *" /c:"^ *3 *3 *" product.dat&pause
作者: imhere    时间: 2016-6-24 00:59

本帖最后由 pcl_test 于 2016-6-24 12:41 编辑

回复 5# pcl_test
非常感谢,但是新生成的文件有空行,空行数目==NUL占位符数目,如果能去掉空行就完美了。
不过,现在已经可以进一步检索需要的信息了。
作者: imhere    时间: 2016-6-24 01:02

回复 5# pcl_test

对了,版主,我是新人,这是第二贴(报到贴是第一个),哪里做错了吗?




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