所以,我想,那是一种满口的感觉。
基本上,故事是这样的。我是从二进制C ++应用程序,使用CreateProcess启动shell命令到cygwin的bash.exe,运行sed命令,获取文件,将每行中带有空字符的行放入一个文件,并将每行没有空字符放在不同的文件中。搜索/输出部分正在运行,问题是运行66兆字节文件大约需要12秒。我可能不得不通过这个过程运行高达200兆的文件,所以我想尽可能地帮助你如何优化它。它必须全部在一行中,并且不能在bash脚本中。我使用的命令如下:
c:\cygwin\bin\bash.exe --login -c "cat c:'\'sedtest'\'BIGFILE.txt | sed -r -ne '/\x0+/ p' > c:'\'sedtest'\'nullfile.txt; cat c:'\'sedtest'\'BIGFILE.txt | sed -r -e '/\x0+/d' > c:'\'sedtest'\'notnullfile.txt"
顺便说一下,这不是字符串在C ++应用程序中的样子,而是在转义后传递给shell的内容。它工作得很好,只需要很长时间。我不认为C ++代码目前是相关的,但如果有人认为需要,我会发布它。