Sta*_*rov 5 linux parallel-processing posix gnu sed
我天真地冒险使用以下命令来处理数据文件:
cat old.one | parallel --pipe 'sed -r "s/\./\,/g"' > new.one
Run Code Online (Sandbox Code Playgroud)
目标是取代"." 用",".但结果文件与顺序处理获得的文件不同:
sed -r "s/\./\,/g" old.one > new.one
Run Code Online (Sandbox Code Playgroud)
也许并行工作可以不同的方式完成?在没有信号量的情况下,这将是很好的,并且仅在最后组合这些部分.
解
非常感谢!这是我的结果:
sed:13.834 s
sed -r"s /./,,/ g"old.one> new.one
平行sed:12.489 s
猫old.one | parallel -k --pipe'sed -r"s /./\,/ g"'> new.one
tr:6.480秒
猫old.one | tr"." ","> new.one
并行tr:5.848 s
cat new.one | parallel -k --pipe tr"." ","> old.one
如果这可以正常工作(-j1):
cat old.one | parallel -j1 --pipe 'sed -r "s/\./\,/g"' > new.one
Run Code Online (Sandbox Code Playgroud)
那应该工作(-k):
cat old.one | parallel -k --pipe 'sed -r "s/\./\,/g"' > new.one
Run Code Online (Sandbox Code Playgroud)
--pipe非常慢,所以如果速度至关重要,请使用--pipe-part而不是块大小:
parallel -a old.one -k --block 30M --pipe-part 'sed -r "s/\./\,/g"' > new.one
Run Code Online (Sandbox Code Playgroud)