gnu并行管道sed - 没有输入文件错误

Posted

技术标签:

【中文标题】gnu并行管道sed - 没有输入文件错误【英文标题】:gnu parallel pipe sed - no input files error 【发布时间】:2021-04-29 17:10:14 【问题描述】:

我正在使用以下sed 脚本来执行一些查找和替换:

parallel --pipepart --block 1000M -a input.txt sed -ise 's/cat/dog/g; s/abc/xyz/g; s/def/22/g' > output.txt

但我收到以下错误:

sed: no input files

我尝试删除 -i 选项,但结果仍然相同。

input.txt 文件包含字母和数字的组合,包含大约 3000 万行

【问题讨论】:

【参考方案1】:

你需要-q:

parallel -q --pipepart --block 1000M -a input.txt sed -se 's/cat/dog/g; s/abc/xyz/g; s/def/22/g' > output.txt

要了解原因:

https://www.gnu.org/software/parallel/man.html#QUOTING https://www.gnu.org/software/parallel/parallel_design.html#Always-running-commands-in-a-shell

另外--block -1 --lb 可能比--block 1000M 更有效。

【讨论】:

使用选项 -q--lb 就可以了。谢谢@Ole Tange!

以上是关于gnu并行管道sed - 没有输入文件错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 if else 和 xargs 并行管道到 gnu

GNU Parallel使用管道并行执行命令?

如何删除垂直条或管道 |内双竖条/管道|使用 sed?

致命错误:gnu/stubs-32.h:没有这样的文件或目录

GNU并行双击选项不起作用

致命错误:Python.h:没有这样的文件或目录错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1