awk 逐行处理文件。假设每行操作不依赖于其他行,有没有办法让 awk 一次并行处理多行?
是否有其他文本处理工具可以自动利用并行性并更快地处理数据?
唯一尝试提供 awk 并行实现的 awk 实现是并行 awk http://code.google.com/p/parallel-awk/people/detail?u=john.david.duncan但现在看来这个项目已经死了。
否则,并行化 awk 的一种方法是将输入分成块并并行处理它们。然而,分割输入数据仍然是单线程的,因此可能无法实现性能增强目标,主要问题是标准split
如果不读取每一行,命令就无法在行边界处分割。
如果您有可用的 GNU split,或者支持的版本-n l/*
选项,这是一种并行处理文件的优化方法,假设您有 8 个 vCPU:
inputfile=input.txt
outputfile=output.txt
script=script.awk
count=8
split -n l/$count $inputfile /tmp/_pawk$$
for file in /tmp/_pawk$$*; do
awk -f script.awk $file > ${file}.out &
done
wait
cat /tmp/_pawk$$*.out > $outputfile
rm /tmp/_pawk$$*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)