【发布时间】:2015-01-25 05:42:28
【问题描述】:
我目前有一个 gawk 程序可以满足我的需求:
gawk '{command = ("python gen.py")
print $0 | command
close(command)}' RS='*** END OF THE RECORD' bigfile.txt
基本上,我有一个包含几百条记录的大文件(想想 1 gb),每条记录都由以“*** END OF THE RECORD”开头的行分隔。每个记录块将有几兆字节大,例如 ~5mb。
我将文件分成小部分(由“***END OF THE RECORD”行分隔),并将其通过管道传输到 python 程序中以进行进一步处理。
我怎样才能在普通的 awk 中做到这一点,而不是 gawk?这个程序目前在 awk 中给我一个错误。
值得注意的是,该程序将每个小输出通过管道传输到另一个程序,因此单独输出每一行的解决方案将不起作用。我还需要使用 close(command) 关闭管道,以便为我管道的每个文件运行一个新脚本。
我尝试过这样的事情:
awk '/^*** END OF THE RECORD/{next}{command = ("python gen.py")
print | command
close(command)}' file.text
但它不起作用。
【问题讨论】: