并行运行sed

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

Ole*_*nge 6

如果这可以正常工作(-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)