bash 中带有 mkfifo 的 gunzip

Posted

技术标签:

【中文标题】bash 中带有 mkfifo 的 gunzip【英文标题】:gunzip with mkfifo in bash 【发布时间】:2013-03-26 16:16:34 【问题描述】:

我正在尝试对文件进行压缩,然后将结果保存在使用 mkfifo 创建的命名管道中,该管道最终将用于连接命令。我见过很多关于使用 mkfifo 压缩东西的例子,但在这种情况下几乎没有关于 gunzip 的例子。我的问题概述是:

获取两个 *.gz 文件的内容,而无需将它们实际解压缩到磁盘。为此,请捕获 gunzip -c *.gz 的流(这是我想使用命名管道作为保存流内容的文件的地方)。获取两个命名管道并对它们执行连接。 Unix 代码中的简化思想有点像……

mkfifo pipe1
mkfifio pipe2

gunzip -c fileA.gz > pipe1 &
gunzip -c fileB.gz > pipe2 &

join pipe1 pipe2

rm pipe1 pipe2

任何建议将不胜感激

【问题讨论】:

你有什么问题?该脚本是否不起作用(除了mkfifio 错字),还是什么? 【参考方案1】:

您实际上并不需要命名管道。 Bash 有一种特殊的语法,可以在一个命令中做到这一点:

join <(gunzip -c fileA.gz) <(gunzip -c fileB.gz)

【讨论】:

关于该语法的旁注......有没有一种方法可以在它们进行比较时从压缩线中获取值?

以上是关于bash 中带有 mkfifo 的 gunzip的主要内容,如果未能解决你的问题,请参考以下文章

bash 中带有变量、大括号和哈希字符的 $0##... 语法是啥意思?

在 Bash 中带有前置或附加值的读取数组

bash 脚本中带有 PKCS#12 证书的 cURL

Bash 中带有字符、点和数字的正则表达式

读取bash脚本中的输入,该脚本是路径中带有空格的目录[重复]

Linux 命名管道 - MKFIFO 查询