提高从cmd.exe调用的cygwin中sed的性能

时间:2015-11-19 21:50:21

标签: bash optimization sed cmd cygwin

所以,我想,那是一种满口的感觉。

基本上,故事是这样的。我是从二进制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 ++代码目前是相关的,但如果有人认为需要,我会发布它。

0 个答案:

没有答案